2015-01-14 4 views
0
256 bit = 256/8 = 32 
192 bit = 192/8 = 24 
128 bit = 128/8 = 16 

<?PHP 
include("AES.php"); // http://aesencryption.net/ 
    $string = "myawesometext to encrypt!"; 
    $key = "123456789"; 
    $block = 256; 
    $aes = new AES($string, $key, $block); 
    $enc = $aes->encrypt(); 
    $aes->setData($enc); 
    $dec= $aes->decrypt(); 
    echo "After encryption: ".$enc."<br/>"; 
    echo "After decryption: ".$dec."<br/>"; 
?> 

Ошибка: mcrypt_decrypt(): Ключ от размера 25 не поддерживается этим алгоритмом. Только ключи размеров 16, 24 или 32 поддерживаютсяAES mcrypt_encrypt размер ключа

Когда я использую этот сайт: http://aesencryption.net/ шифрования и дешифрования работает отлично. PHP: 5.6.3

изменение размера ключа на самом деле не вариант, видя, как это должно работать.

Почему я использую AES? Я общаюсь между двумя серверами (один из них является сторонним), а информация, передаваемая в сообщении, может быть утечкой безопасности, если она не зашифрована. иначе я бы использовал хеширование. Этим данным требуется, которые могут быть возмещены третьей стороной с ключом.

ВАЖНО:

  • Текущая версия PHP: 5.6.3 // не работает
  • Последняя версия PHP: 5.5.15 // работает

---- ------------ SOLVED

версия: 5.6.0 "Недопустимые ключи и iv размеры больше не принимаются. mcrypt_encrypt() теперь выдает предупреждение и возвращает FALSE, если входы недействительны. Раньше клавиши и IV были дополнены байтами '\ 0' до следующего допустимого размера. "- http://php.net/manual/en/function.mcrypt-encrypt.php

+0

Что я думаю, что вы неправильно поняли. –

+0

Я вообще не изменил свой вопрос, я просто искоренил код, который трудно читать, и изменил формат. Вопрос в том, почему мое шифрование расшифровывается, несмотря на то, что оно может быть расшифровано на сайт AESencyption.net. –

+1

Пожалуйста, переместите свой ответ в раздел ответа и удалите его из своего вопроса. –

ответ

0

использовать openssl_random_pseudo_bytes для генерации ключа openssl_random_pseudo_bytes будет генерировать байты поэтому вам нужен BIN2HEX, чтобы получить буквенно-цифровой ключ bin2hex преобразует байты вы сгенерированные в ASCII кодируемого шестнадцатеричного

//To generate a 16 bytes key use this: 
$key = bin2hex(openssl_random_pseudo_bytes(8)); 
//24 bytes 
$key = bin2hex(openssl_random_pseudo_bytes(12)); 
//32 bytes 
$key = bin2hex(openssl_random_pseudo_bytes(16)); 
//To view the byte size: 
echo "key byte size: ".strlen($key)."<br/>"; 
...
Смежные вопросы