这是函数,其中包含变量名称
encrypt(arguments.input, key, algorithm, encoding, arguments.salt, iterations)
我使用的是长度为44个字符的256位AES密钥。
我选择AES
和base64
进行算法和编码。
我尝试了各种生盐的方法,
createUUID()
,generatesecretkey('AES',128)
和generatesecretkey('AES',256)
当盐每次更改时,加密结果始终与相同输入相同。就像忽略它一样,没有错误可以说明原因。
我还注意到,迭代对加密没有影响。
答案 0 :(得分:3)
算法“AES”实际上是shorthand for "AES/ECB/PKCS5Padding"(即算法/模式/填充)。使用默认ECB mode时,iv
将被忽略。使用手写算法表格指定CBC模式,即“AES / CBC / PKCS5Padding”
Runnable Example on Trycf.com:
<cfscript>
for (i = 1; i <= 5; i++) {
key = "ji3fd0ZKB87COPz5ZwqsQEQKcuRggtvvO98t3mZFxns=";
// generate different iv's for DEMO only
uuid = CreateUUID();
iv = BinaryDecode( replace(uuid, "-", "", "all"), "hex");
input = "This is plain text to be encrypted";
encoding = "base64";
algorithm = "AES/CBC/PKCS5Padding";
encrypted = encrypt(input, key, algorithm, encoding, iv);
decrypted = decrypt(encrypted, key, algorithm, encoding, iv);
writeOutput("<hr>["& i &"] encrypted="& encrypted );
writeOutput("<br>["& i &"] decrypted="& decrypted );
writeOutput("<br>["& i &"] iv="& uuid );
}
</cfscript>
注意:要使用较大的密钥,例如256位,您必须先安装(JCE) Unlimited Strength Jurisdiction Policy Files
答案 1 :(得分:2)
AES仅支持三种密钥长度,16,24和32字节。请注意,44个字符是352位,这些都不是。但似乎加密方法需要Base64编码的字符串作为键,因此44字符的Base64键似乎是正确的。文档没有详细说明关键表单。
另请注意,对于16字节的AES,iv(arguments.salt
)的大小必须完全一个块。
有关详细信息,请参阅Encrypt。
如需更多帮助,请提供加密参数和结果。