2016-12-06 2 views
0

Итак, я работал над этой функцией, и я не уверен, что случилось.Функция тройного дешифрования не работает

Я получаю зашифрованные данные и ключ:

$key = 'aaaaaaaabbbbbbbbccccccccdddddddd'; 
$data = 'b5057bbc04b842a96144a0f617f2820e'; 

Я пошел и превращал их в двоичный:

$key = pack('H*',$key); 
$data = pack('H*',$data); 

И побежал функцию дешифрования:

echo bin2hex(mcrypt_decrypt(Mcrypt_3des, $key, $data, MCRYPT_MODE_ECB)); 

Однако то, что Я получаю: e2119b734b5050e3fa8717ee17f3a548

Но если я запускаю тот же расшифровку на http://tripledes.online-domain-tools.com/ или http://www.emvlab.org/descalc/?key=aaaaaaaabbbbbbbbccccccccdddddddd&iv=0000000000000000&input=b5057bbc04b842a96144a0f617f2820e&mode=ecb&action=Decrypt&output=54657374313233313233000000000000

Это фактически decrpyts к 54 65 73 74 31 32 33 31 32 33 00 00 00 00 00 00

, который на самом деле Test123123

Любые предложения того, что может быть проблема?

EDIT:

Я попытался переключиться на openssl_decrypt

Однако я получаю ложные вернулся.

Код:

$result = openssl_decrypt($data,'des-ede3', $key); 
result = bool(false) 
+2

Подобно тому, как FYI, [Mcrypt мертвый проект] (https: // блог .remirepo.net/post/2015/07/07/About-libmcrypt-and-php-mcrypt) и может быть удалена из будущей версии PHP – Machavity

+0

@Machavity Хорошо знать, будут ли какие-либо новые функции, которые я мог бы использовать вместо этого используется? – Derek

+0

https://secure.php.net/openssl_decrypt – Narf

ответ

0

Я был в состоянии заставить его работать, используя открытую функцию дешифрования SSL,:

$key = 'aaaaaaaabbbbbbbbccccccccdddddddd'; 
$key = pack('H*',$key); 

// DATA 
$data = 'b5057bbc04b842a96144a0f617f2820e'; 
$data = pack('H'.strlen($key),$data); 

// DECRYPT OPEN SSL 
$result = openssl_decrypt($data,'des-ede', $key, OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING);