三重des解密功能不起作用
Triple des decryption function not working
所以我一直在处理这个功能,但我不确定哪里出了问题。
我得到加密数据和密钥:
$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
实际上解密为 54 65 73 74 31 32 33 31 32 33 00 00 00 00 00 00
实际上是 Test123123
有什么问题的建议吗?
编辑:
我试过切换到 openssl_decrypt
但是我总是收到错误的返回。
代码:
$result = openssl_decrypt($data,'des-ede3', $key);
result = bool(false)
我能够使用开放的 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);
所以我一直在处理这个功能,但我不确定哪里出了问题。
我得到加密数据和密钥:
$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
实际上解密为 54 65 73 74 31 32 33 31 32 33 00 00 00 00 00 00
实际上是 Test123123
有什么问题的建议吗?
编辑:
我试过切换到 openssl_decrypt
但是我总是收到错误的返回。
代码:
$result = openssl_decrypt($data,'des-ede3', $key);
result = bool(false)
我能够使用开放的 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);