【发布时间】:2017-05-18 22:05:43
【问题描述】:
这是我的代码
$key = pack('H*', "11223344556677881122334455667788");
$plaintext = pack('H*', "0000000000000000");
$ciphertext = mcrypt_encrypt(MCRYPT_3DES, $key, $plaintext, MCRYPT_MODE_ECB);
echo bin2hex($ciphertext);
但我得到的结果是 8ca64de9c1b123a7 与 this site 不同
6FB23EAD0534752B 这是我想要的
谁能解释为什么我得到与该网站不同的密码文本?
【问题讨论】:
-
According to this comment at php.net,mcrypt 的 3DES 只接受 192 位密钥。您的密钥是 128 位。在
$key = pack('H*', "11223344556677881122334455667788");之后,尝试添加$key .= substr($key,0,8);看看是否有帮助。 (我无法测试,因为我没有在任何地方安装 mcrypt。) -
@squeamishossifrage 在 Java 上测试,我使用密钥
112233445566778811223344556677880000000000000000得到了结果。 mcrypt 无疑是我遇到过的最糟糕的库。 -
我尝试在 DES 中加密,并获得正确的密码文本,但收到 PHP 警告:对于此算法,密钥大小太大。那么这一方是怎么做的呢?
标签: php encryption cryptography tripledes