Функции Язык программирования PHP

mcrypt_create_iv

(PHP 3>= 3.0.8, PHP 4)

mcrypt_create_iv - создаёт вектор инициализации/initialization vector (IV) из произвольного источника.

Описание

string mcrypt_create_iv (int size, int source)

mcrypt_create_iv() используется для создания IV.

mcrypt_create_iv() принимает два аргумента: size определяет размер IV, source специфицирует источник IV.

Источником может быть MCRYPT_RAND (системный генератор случайных чисел),MCRYPT_DEV_RANDOM (читает данные из /dev/random) и MCRYPT_DEV_URANDOM (читает данные из /dev/urandom). Если вы используете MCRYPT_RAND, не забудьте вызывать srand() до инициализации генератора случайных чисел.

Пример 1. mcrypt_create_iv()
<?php 
$size = mcrypt_get_iv_size (MCRYPT_CAST_256, MCRYPT_MODE_CFB); $iv = mcrypt_create_iv 
($size, MCRYPT_DEV_RANDOM); ?>

IV имеет смысл только как альтернативный источник для утилит шифровки. Этот IV вообще не должен быть секретным, хотя это может быть и желательно. Вы можете даже высылать его вместе с вашим шифрованным текстом без потери секретности.

Дополнительная информация находится на http://www.ciphersbyritter.com/GLOSSARY.HTM#IV, http://fn2.freenet.edmonton.ab.ca/~jsavard/crypto/co0409.htm и в главе 9.3 в Applied Cryptography by Schneier (ISBN 0-471-11709-9).


Назад Оглавление Вперёд
mcrypt_cfb Вверх mcrypt_decrypt

Глава 17. HTTP-аутентификация в PHP

Заметьте, однако, что вышесказанное не предотвращает похищение тем, кто контролирует неаутентифицированный URL, пароля из аутентифицированных URL на этом же сервере.

И Netscape Navigator, и Internet Explorer будут очищать локальный кэш аутентификации окон браузера для сферы/realm при получении ответа 401 сервера. Это может "log out" (выполнить выход) пользователей, форсируя повторное введение ими username и password. Некоторые используют это для "time out" логинов, или предоставляют кнопку "log-out". Кривая задана в полярной системе координат

Пример 17-2. HTTP аутентификация, форсирующая новые name/password
<?php function authenticate() { header( "WWW-Authenticate: Basic 
realm=\"Test Authentication System\""); header( "HTTP/1.0 401 Unauthorized"); 
echo "Вы обязаны ввести правильные login ID и пароль для доступа к этому ресурсу\n"; 
exit; } if (!isset($_SERVER['PHP_AUTH_USER'])||($SeenBefore == 
1 && $OldAuth == $_SERVER['$PHP_AUTH_USER'])))  { authenticate(); 
} else { echo "<p>Welcome: {$_SERVER['$PHP_AUTH_USER']}<br>"; 
echo "Old: {$_REQUEST['$OldAuth']}"; echo "<form action='{$_SERVER['$PHP_SELF']}' 
METHOD='POST'>\n"; echo "<input type='hidden' name='SeenBefore' value='1'>\n"; 
echo "<input type='hidden' name='OldAuth' value='{$_SERVER['$PHP_AUTH_USER']}'>\n"; 
echo "<input type='submit' value='Re Authenticate'>\n"; echo "</form></p>\n"; 
} ?>