将AES从Coldfusion解密到PHP

将AES从Coldfusion解密到PHP,php,coldfusion,aes,encryption,Php,Coldfusion,Aes,Encryption,我使用以下方法在ColdFusion中加密了一个字符串: <cfset strEnc=ToBase64(Encrypt("some text","123", "AES","Base64"))> <cfset strDec=ToString(Decrypt(ToBinary(strEnc), "123", "AES","Base64"))> 我可以使用以下方法解密ColdFusion中的字符串: <cfset strEnc=ToBase64(Encrypt("

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

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

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

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


但是我无法在PHP中解密
streng
。我在PHP中找到了一些解密函数。但它们需要一个
iv
参数。有人能帮我吗?

看一看

看一看

每种语言提供的本机方法在预期参数、参数和加密方法方面都会有所不同

为了能够用一种语言加密,用另一种语言解密,您需要使用一个“全局”安全工具——一个跨语言工作的工具

我建议您看看ESAPI(企业安全API),它是由OWASP(开放Web应用程序安全项目)创建的一个开源安全库

ESAPI库()和PHP库()有一个特定于ColdFusion的实现

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

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

看看Encryptor,它提供了散列和加密数据的方法。如果您想做得更好,它还可以签名并盖章以添加额外的数据完整性检查。(这完全取决于你想去的深度)

ESAPI本质上允许开发人员在安全配置文件(一个简单的文本文件)中设置详细信息,如散列密钥和盐密钥、加密密钥以及库将从中读取的其他详细信息。在这种情况下,PHP实现可以很容易地拥有与ColdFusion实现相同的安全细节,这意味着它们将共享相同的加密/哈希/salt等细节,从而将相同的数据加密和解密为相同的值


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

每种语言提供的本机方法在预期参数、参数和加密方法方面会有所不同

$key = base64_decode($key);

$data = base64_decode($data);

echo mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $data, MCRYPT_MODE_ECB);
为了能够用一种语言加密,用另一种语言解密,您需要使用一个“全局”安全工具——一个跨语言工作的工具

我建议您看看ESAPI(企业安全API),它是由OWASP(开放Web应用程序安全项目)创建的一个开源安全库

ESAPI库()和PHP库()有一个特定于ColdFusion的实现

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

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

看看Encryptor,它提供了散列和加密数据的方法。如果您想做得更好,它还可以签名并盖章以添加额外的数据完整性检查。(这完全取决于你想去的深度)

ESAPI本质上允许开发人员在安全配置文件(一个简单的文本文件)中设置详细信息,如散列密钥和盐密钥、加密密钥以及库将从中读取的其他详细信息。在这种情况下,PHP实现可以很容易地拥有与ColdFusion实现相同的安全细节,这意味着它们将共享相同的加密/哈希/salt等细节,从而将相同的数据加密和解密为相同的值


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

它不起作用。结果字符串与coldfusion不同。Coldfusion:so PHP:fnecrypt('hans','ezlkjjqziarvhfkityib9w=')!=Coldfusion:ToBase64(加密(“hans”、“EZLKJjqzIArvHFQITyiB9w==”、“AES”、“Base64”))有趣!哦,我检查了加密函数-问题是123是用于加密字符串的密钥,您必须以某种方式使用php函数AES_decrypt。我不知道coldfusion函数是如何工作的,但我真的想知道哪个函数先执行。嗨,123是一个例子,我必须使用这个键“EZLKJjqzIArvHFQITyiB9w==”我想你可以给coldfusion函数添加限制以匹配php签出-它不工作的结果字符串与coldfusion不同。Coldfusion:so PHP:fnecrypt('hans','ezlkjjqziarvhfkityib9w=')!=Coldfusion:ToBase64(加密(“hans”、“EZLKJjqzIArvHFQITyiB9w==”、“AES”、“Base64”))有趣!哦,我检查了加密函数-问题是123是用于加密字符串的密钥,您必须以某种方式使用php函数AES_decrypt。我不确定coldfusion函数是如何工作的,但我真的想知道哪个函数首先执行。嗨,123是一个例子,我必须使用这个密钥“ezlkjjqziarvhfkityib9w=”我想你可以给coldfusion函数添加限制以匹配php签出-你如何能够使用密钥“123”用AES加密?如何使用密钥“123”使用AES进行加密?
$key = base64_decode($key);

$data = base64_decode($data);

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