Расшифровать строку des в обычный текст

Мне нужно расшифровать строку, зашифрованную алгоритмом des. Как я могу сделать в PHP? У меня есть реальные тестовые случаи следующим образом:

key ='0123456789abcdef'
encryptedValue = '88C10F0B8C084E5F'; //hex value
decodedValue = '2020202039353538';  // this is hex

я пробовал

$keyValue ='0123456789abcdef';
$encryptedValue = '88C10F0B8C084E5F'; //hex value
$decodedValue = '2020202039353538';  // this is hex

$decryptedData = mcrypt_decrypt( MCRYPT_DES, $keyValue, $encryptedValue , 'ecb');
var_dump($decryptedData);
var_dump($decodedValue);

Вывод decryptedData является нулевым. Я проверил это решение. Пожалуйста, предложите мне решение.

Обновление: 2017 янв 18:
Многие люди предлагают мне не использовать des или mcrypt. Мне нужно расшифровать это, потому что мой провайдер API отвечает мне этим алгоритмом. И о mcrypt_decrypt функции, я не нашел альтернативы. Теперь, пожалуйста, предложите мне больше.

Я пытался в соответствии с @duskwuff, я сделал изменения как.

$decryptedData = mcrypt_decrypt( MCRYPT_DES, $keyValue, hex2bin($encryptedValue) 'ecb');
var_dump(bin2hex($decryptedData));

Выход пустой строки что, очевидно, является двоичным представлением bool false

Для вашего удобства хочу поделиться результатами крипто калькулятора.введите описание изображения здесь
Я получаю это предупреждение также:Warning: mcrypt_decrypt(): Key of size 16 not supported by this algorithm. Only keys of size 8 supported in /var/www/html/encdec/enc.phtml on line 13

0

Решение

Значения, в которые вы передаете mcrypt_decrypt() похоже, они предназначены для представления шестнадцатеричных данных, а не передаются напрямую. использование hex2bin() на входах, чтобы преобразовать их в двоичные данные, и bin2hex() преобразовать вывод обратно в ожидаемое представление.

Кроме того, прекратите использование mcrypt. Он старый и сломанный и был удален из PHP 7.2.

2

Другие решения

Я решил свою проблему с помощью следующего кода:

$keyValue ='0123456789abcdef'; //hex value
$encryptedOrderId = '88C10F0B8C084E5F'; //hex value
$decodeValueByOnlineTool = '2020202039353538';  // this is hex
$opensslDecrypt = openssl_decrypt(  hex2bin($encryptedOrderId)  , 'des-ecb' , hex2bin($keyValue) , OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING , '' );
var_dump($opensslDecrypt);
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector