【发布时间】:2016-01-08 11:16:57
【问题描述】:
PHP 和 ColdFusion9 中的 AES 加密产生不同的结果。有人可以帮帮我吗?
以下 PHP 代码
$key = "12345678123456781234567812345678";
$iv = "1234567812345678";
$data = "This is a plain string.";
echo base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $data, MCRYPT_MODE_CBC, $iv));
给我 G+tdEOfQTtVCQGxW3N5uzkqN207OyfIPxS6zf2xrKKY=
下面的 ColdFusion 代码
<cfset thePlainData = "This is a plain string." />
<cfset theKey = "12345678123456781234567812345678" />
<cfset theAlgorithm = "AES/CBC/PKCS5Padding" />
<cfset theEncoding = "base64" />
<cfset theIV = "1234567812345678" />
<cfset encryptedString = encrypt(thePlainData, theKey, theAlgorithm, theEncoding, theIV) />
给我 KLt55n5/T3ee6xVq9VGFbyCacJznkHEqC/RDRhL+4nw=
知道我哪里错了吗?提前致谢。
【问题讨论】:
-
上面的 PHP 为我运行,但上面的 CF 抛出错误:“指定的密钥不是此加密的有效密钥:非法密钥大小”...是 真的 确切的 CF 代码?这是 CF9 企业版吗?
-
非常感谢您的快速回复。我正在使用 ColdFusion9 试用版。
-
CF 期望
theKey在 base64 中。将theKey转换为 base64 可以让您更接近,但并非一直如此。所以这可能是编码差异。你能用十六进制或base64打印出theKey/iv吗?
标签: php encryption coldfusion aes