我试图通过演示应用程序加密as3crypto中的文本 .
现在我试图通过PHP解密加密的文本,但似乎文本没有正确解密 . 有谁知道如何通过PHP正确解密它?还是我做错了?请赐教......
这是场景:
- 在_393672中对此进行加密:
encryption: AES
mode: 加拿大广播公司
padding: 无
key: 11918f8bcd112e92744125008722050c
text: Lorem ipsum dolor sit amet,consectetur adipiscing elit . 在ut massa nec purus laoreet posuere quis vitae tortor .
initialize vector: 留空
-
按加密 . 选择base64并复制密文 .
-
制作一个包含这些代码并运行它的php脚本:
$ cipher = MCRYPT_RIJNDAEL_128;
$ mode = MCRYPT_MODE_CBC;
$ key =“11918f8bcd112e92744125008722050c”;
$ cipher =“PLACE CIPHER TEXT HERE ...”;
$ data = base64_decode($ cipher);
echo mcrypt_decrypt($ cipher,$ key,$ data,$ mode);
2 回答
这可行:
PHP代码:
这是AS3代码
问题可能在于你的关键 . 虽然您可以将十六进制字符串提供给as3crypto,并且它将知道如何处理它,
mcrypt_decrypt
会将每个字符解释为's underlying ASCII value (like a = 97) instead of it'的十六进制值(a = 10) . 使用hex2bin方法将十六进制字符串转换为字节字符串,您的解密应该可以正常工作 .另外,问题可能在于as3crypto和php之间的默认IV(初始化向量)的不同想法 . 由于您使用的是CBC模式,因此您应该指定IV,这是一种很好的安全措施 . 还要注意与你的密钥相似的潜在缺陷,在as3中指定一个十六进制字符串并需要在php中转换它 .