【发布时间】:2015-06-17 12:29:30
【问题描述】:
我正在尝试通过 PHP 函数 mcrypt_encrypt 使用 CAST256 和 CBC 加密字符串。我使用键 test 和输入 test,生成以下代码:
mcrypt_encrypt(MCRYPT_CAST_256, 'test', 'test', MCRYPT_MODE_CBC);
这个产生的 base64 编码版本(在 PHP 版本 5.5.12 上):
DaypOCFVfoI8ghemj0ZkEg==
但是,我将我的输出与http://www.tools4noobs.com/online_tools/encrypt/ 上的工具进行比较,我的输出差异很大;使用上述密码、模式、密钥和数据的站点输出如下:
eIKnQGAhjsGh+11XZsA2Lg==
使用相反的工具解密每个字符串(即使用 PHP 解密的站点输出,以及通过站点解密的 PHP 输出)给出以下输出:
DUCD000000000000 (site output)
DUCD000000000000 (PHP output)
但是,使用与加密字符串相同的介质进行解密会得到输入数据('test')。
我的问题是,是否存在这种差异的原因,例如在加密/解密时遗漏了 IV 或滥用了 PHP mcrypt_decrypt 函数?
【问题讨论】:
标签: php encryption cryptography mcrypt