Не удается получить тот же результат для шифрования с помощью mcrypt и phpseclib - PullRequest
1 голос
/ 16 февраля 2012

У меня была реализация, которая шифрует входную строку, используя mcrypt. К сожалению, я больше не могу использовать это, потому что mcrypt не установлен на сервере, и я не могу установить его. Итак, я посмотрел на phpseclib, но, к сожалению, я не получаю ту же зашифрованную строку. Вот мой код:

include('Crypt/AES.php');

$key256 = "1234567890123456";
$iv =  "6543210987654321";

$cleartext = "This a teststring :)";

echo $cleartext . "<br /><br />";

$cipher = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');

if (mcrypt_generic_init($cipher, $key256, $iv) != -1)
{
  // PHP pads with NULL bytes if $cleartext is not a multiple of the block size..
  $cipherText = mcrypt_generic($cipher,$cleartext );
  mcrypt_generic_deinit($cipher);
}

$enc64 = bin2hex($cipherText);
echo $enc64 . "<br />";

while (strlen($cleartext) % 16 != 0) {
  $cleartext .= "\0";
}

$aes = new Crypt_AES();
$aes->setKey($key256);
$aes->setIV($iv);
$cipherText = $aes->encrypt($cleartext);
$enc64 = bin2hex($cipherText);
echo $enc64;

После запуска сценария (на сервере разработки, на котором установлен mcrypt), я получаю следующий вывод:

Это тестовая строка:)

0fc60e5a06eca68d4aada496e0e83ea65806abfe7d8f72723da470e6c9e86372 0fc60e5a06eca68d4aada496e0e83ea65806abfe7d8f72723da470e6c9e8637231b74e99d9b729813e974f211550d175

Как видите, обе зашифрованные строки идентичны. Почти. Тот, который был зашифрован с помощью phpseclib, слишком длинный, и я понятия не имею, почему. Я уже пробовал разные размеры ключей и блоков. Я также пытался использовать класс Cryp_Rijndael phpseclib. Надеюсь, один из вас может указать мне правильное направление.

1 Ответ

0 голосов
/ 17 февраля 2012

Скопированный комментарий: Вы проверили, что вы используете одинаковые отступы в обеих версиях.

...