2016-10-13 2 views
2

https://www.tools4noobs.com/online_tools/encrypt/ дает «a67a318c98a0307502ba81caade2f3a9» как результат DES ECB для ключа «1234567890abcdef», а полезная нагрузка «шифрует это».DES ECB шифрование с PHP

РНР код

echo bin2hex(mcrypt_encrypt(
    MCRYPT_DES, 
    hex2bin("1234567890abcdef"), 
    "encrypt this", 
    MCRYPT_MODE_ECB)) . "\n"; 

распечатывает "1a29ee87f2ad67644ff28450c676a664".

Что не так с кодом?

+0

* tools4noobs *, кажется, сокращает кодовую фразу до '" 12345678 "' (без 'hex2bin', как в вашем примере). https://3v4l.org/sm8p8 – Yoshi

ответ

2

noobs4tools сайт отключает функцию hex2bin и усекает длину ключа до 8 символов (как указано в комментариях Йоши).

С ключами 12345678 результат как на веб-сайте, так и на PHP-коде согласован.

Ключ DES указан в руководстве как 56 бит. Прочтите ниже полезный фон для конкретных ключей DES.

How should I create my DES key? Why is an 7-character string not enough?

ключ, используемый noobs4tools сайте:

"12345678" 

ключ, используемый код:

hex2bin("1234567890abcdef"); // 4Vx���� 

Эта разница затем дает различные выходы.

Таким образом, веб-сайт не переводит ключ в любую другую цифру или форму данных. Он ожидает, что вы предоставите уже правильно отформатированное значение в скрипте страницы.

+0

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

+0

Спасибо @ haba713, ваш комментарий правильный, я обновил свой ответ. – Martin

+0

Извините @Martin. Слово «не» было исключено из моего предыдущего комментария ... так что ... Я протестировал код с PHP 5.6.26-0 + deb8u1 и mcrypt_encrypt() делает * НЕ * бросает предупреждение или возвращает FALSE. – haba713

Смежные вопросы