解密从Coldfusion到PHP的AES

时间:2012-06-29 07:15:24

标签: php coldfusion aes encryption

我使用以下方法在ColdFusion中加密了一个字符串:

<cfset strEnc=ToBase64(Encrypt("some text","123", "AES","Base64"))>

我可以使用以下方法解密ColdFusion中的字符串:

<cfset strDec=ToString(Decrypt(ToBinary(strEnc), "123", "AES","Base64"))>

但是我无法在PHP中解密strEnc。我在PHP中找到了一些解密函数。但它们需要iv参数。任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:3)

每种语言提供的本机方法将根据预期的参数,参数和加密方法而有所不同。

为了能够使用一种语言进行加密并在另一种语言中进行解密,您需要使用“全局”安全工具 - 一种可以跨语言工作的工具。

我建议您查看ESAPI(企业安全API)https://www.owasp.org/index.php/Category:OWASP_Enterprise_Security_API,它是由OWASP(开放式Web应用程序安全项目)创建的开源安全库https://www.owasp.org

有一个特定于ColdFusion的ESAPI库(https://github.com/damonmiller/cfesapi)和一个PHP库(http://code.google.com/p/owasp-esapi-php/

的实现

由于两者都建立在相同的核心安全实践之上,因此各种方法的实现将适用于您希望使用它们的任何平台/语言。

ESAPI基本上是使用一系列接口构建的,允许您选择和使用安全库的各个部分以满足您的需求。

查看加密器,它提供散列和加密数据的方法。它还可以签名和密封以添加额外的数据完整性检查,如果你想走得那么远。 (这一切都取决于你想要的深度)。

ESAPI本质上允许开发人员在库将读取的安全配置文件(简单文本文件)中设置哈希和盐密钥,加密密钥和其他详细信息等详细信息。在这种情况下,您的PHP实现可以轻松地具有与ColdFusion实现相同的安全性详细信息,这意味着它们将共享相同的加密/散列/盐等详细信息,因此会将相同的数据加密和解密为相同的值。

我没有在此评论中添加任何代码示例,但如果这听起来像是可以帮助您并满足您的要求的内容,请查看上面提到的ESAPI库的链接。它很容易学习和学习,并且可以轻松地完成你需要的工作。

答案 1 :(得分:1)

答案 2 :(得分:1)

$key = base64_decode($key);

$data = base64_decode($data);

echo mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $data, MCRYPT_MODE_ECB);