2012-08-07 106 views
1

我最近为我的公司使用ColdFusion 9做了一个网站。我遇到的问题是使用ColdFusion加密/解密功能。在我解密的某些字符串中,我会看到显示出来的这些奇怪的特殊字符。Coldfusion加密/解密问题

例子:

MK/_0 < ---加密的字符串输出

�#5&z < ---解密的字符串输出

我不知道为什么发生这种情况(只有对某些字符串得到解密)。

下面是代码:

​​
+8

代码示例,请。如果不知道自己在做什么,很难说出错。我怀疑这可能是一个编码问题。 – 2012-08-07 23:28:13

+0

这里是我的代码: 2012-08-10 18:45:59

+0

我编辑了您的原始问题以包含您的代码。你可以在下面的地方删除你的答案。为了将来的参考,StackOverflow是一个Wiki,它允许你或其他人回去编辑你的问题或答案来提高他们的质量。 – 2012-08-10 21:16:50

回答

2

好吧,那么首先,我要指出的是,不指定的加密算法使用的是非常差的加密。所以你需要解决这个问题。其次,你应该使用一些编码来使你的加密存储更加可靠。

所以试试这段代码。

<cfset key = generateSecretKey("AES") /> 

<!--- Set the ciphertext to a variable. This is the string you will store for later deciphering ---> 
<cfset cipherText = encrypt(plaintext, key, "AES/CBC/PKCS5Padding", "HEX") /> 

<cfoutput>#cipherText#</cfoutput> 

<!--- Then when you decrypt ---> 

<cfset decipherText = decrypt(cipherText, key, "AES/CBC/PKCS5Padding", "HEX") /> 

<cfoutput>#decipherText#</cfoutput> 

上面的代码将使用强大的加密算法,并把密文成更容易储存格式比你表现出如上述例子的胡言乱语。这样,当你存储它时,当你再次检索它时会更可靠。

这里的字符串将是什么样子的例子:

A51BBB284D6DCCDC17D26FB481584236087C3AB272918E17963BAF749438C06A484922820EDCCD25150732CC5CF8A096 
+0

感谢您的回复,感谢您编辑我的原始文章。这是我第一次实际发布在这个网站上,但无论如何,我试着你的代码,我一直得到这个coldfusion错误: “试图加密或解密您的输入字符串时发生错误:''无法解码字符串'testKey! $ @“..” 现在我所做的只是添加一个测试密钥并厌倦了对一个简单的字符串进行加密和解密,并且我得到了该错误。您示例中的加密格式与我使用的格式不同吗?再次非常感谢你的帮助。 – 2012-08-14 14:56:09

+0

AES密钥需要精确的长度。在这种情况下,128位。你不能只是扔在那里的任何字符串。 – 2012-08-14 18:13:42

+0

要创建测试密钥,您可以使用generateSecretKeyMethod()。我会修改我的帖子以包含该内容。 – 2012-08-14 18:15:48