0

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

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

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

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

但我无法strEnc在 PHP 中解密。我在 PHP 中发现了一些解密函数。但它们需要一个iv参数。谁能帮我?

4

3 回答 3

3

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

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

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

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

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

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

看看 Encryptor,它提供了散列和加密数据的方法。如果您想走那么远,它还可以签名和盖章以添加额外的数据完整性检查。(这完全取决于您想深入到什么程度)。

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

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

于 2012-06-29T07:56:01.630 回答
1
$key = base64_decode($key);

$data = base64_decode($data);

echo mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $data, MCRYPT_MODE_ECB);
于 2012-07-16T11:03:36.847 回答
1

看看base64_decode()aes_decrypt

于 2012-06-29T07:17:19.143 回答