снабжать струной, тетивой и т.п. Ok так вот пример кода со страницы http://phpseclib.sourceforge.net/crypt/examples.htmlИспользование phpseclib AES для шифрования
<?php
include('Crypt/AES.php');
include('Crypt/Random.php');
$cipher = new Crypt_AES(); // could use CRYPT_AES_MODE_CBC
// keys are null-padded to the closest valid size
// longer than the longest key and it's truncated
//$cipher->setKeyLength(128);
$cipher->setKey('abcdefghijklmnop');
// the IV defaults to all-NULLs if not explicitly defined
$cipher->setIV(crypt_random_string($cipher->getBlockLength() >> 3));
$size = 10 * 1024;
$plaintext = str_repeat('a', $size);
echo $cipher->decrypt($cipher->encrypt($plaintext));
?>
Прежде чем-нибудь, почему линия //$cipher->setKeyLength(128);
идет закомментирована?
И если я хочу установить свой ключ на «1234568790», есть ли что-нибудь, что я должен делать? Потому что это намного короче, чем длина ключа в приведенном выше примере (abcdefghijklmnop).
И, наконец, если открытый текст, который я хочу зашифровать, короток, что-то вроде «мое имя - это связь с Джеймсом», есть ли что-нибудь дополнительное, что я должен делать? Потому что из приведенного выше кода, кажется, длина открытого текста, должно быть 10 х 1024. (Почему?)
Plaintext не должен быть 10x1024, они просто создали строку размером 10 КБ (следовательно, 10x1024), например, цели. 128-битный ключ означает 128/8 байтов = 16 байт, по 2 байта на символ, что составляет 8 символов. 256-битный ключ = 32 байта = 16 символов (следовательно, abcdefghijklmnop, который составляет 16 символов). Я не слишком хорошо знаком с той конкретной библиотекой, которую вы нашли лично - я предпочитаю расширение 'openssl' поверх чистых php-библиотек. – Mjh
@Mjh спасибо за ваш комментарий. Но пример на странице будет отображать ключ как abcdefghijklmnop, когда я устанавливаю его на 128 бит ... это 16 символов для 128-битного ключа – imin
Эти символы не обязательно должны использоваться. Ключ также можно преобразовать в шестнадцатеричный формат (через хеширование), а затем можно использовать соответствующее количество байтов. Лично ключи, которые я использую, всегда создаются случайным образом, а затем хэшируются - используемая функция хеширования выбирается в соответствии с размером блока шифрования. Шифрование - сложный зверь, и он часто не выполняется правильно (обученные криптовые парни найдут ошибки в комментарии, который я разместил). Я предлагаю [этот блог] (http://www.cryptofails.com/), прежде чем вы начнете шифрование. Лучше всего сделать это с самого начала. – Mjh