在我的项目(Titanium Appcelerator Android移动应用程序)中,我使用CryptoJS库进行AES编码。
虽然第一次使用CryptoJS.AES.encrypt时它没有任何盐(我打印了加密变量的盐,并且它表示'未定义'),其他所有其他的盐都是随机盐。
以下是一些代码:
var key53 = CryptoJS2.enc.Base64.parse("ASTRING");
var iv53 = CryptoJS2.enc.Base64.parse("ANOTHERSTRING");
var encrypted1 = CryptoJS2.AES.encrypt(String("test"), String(key53), {iv: String(iv53)});
var encrypted2 = CryptoJS2.AES.encrypt(String("test"), String(key53), {iv: String(iv53)});
/* other code here */
var encrypted3 = CryptoJS2.AES.encrypt(String("test"), String(key53), {iv: String(iv53)});
alert(encrypted1.salt); // undefined
alert(encrypted2.salt); // undefined
alert(encrypted3.salt); // some random salt
然后我使用Coldfusion来解密这些加密值,就像这样:
<cfset base64Key = "ASTRING">
<cfset base64IV = "ANOTHERSTRING">
<cfset ivBytes = binaryDecode(base64IV, "base64")>
#decrypt(variables.ename, base64Key, "AES/CBC/PKCS5Padding", "base64", ivBytes)#
当没有涉及盐时,Coldfusion完全解密。 但是,当有盐时,coldfusion会抛出这个错误:
尝试加密或解密输入字符串时发生错误:给定最终块没有正确填充。
因此,我希望我的加密不涉及任何盐。这在CryptoJS中是否可行?如果是的话,怎么样?
万分感谢!