我使用以下方法在ColdFusion中加密了一个字符串:
<cfset strEnc=ToBase64(Encrypt("some text","123", "AES","Base64"))>
我可以使用以下方法解密ColdFusion中的字符串:
<cfset strDec=ToString(Decrypt(ToBinary(strEnc), "123", "AES","Base64"))>
但是我无法在PHP中解密strEnc
。我在PHP中找到了一些解密函数。但它们需要iv
参数。任何人都可以帮助我吗?
答案 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);