CF DESEDE encrypt()密钥长度问题

时间:2010-09-08 15:23:42

标签: encryption coldfusion coldfusion-8 3des

我正在尝试使用第三方提供的密钥使用ColdFusion encrypt()加密字符串,如下所示:

encrypteded = encrypt('theString', 'FD52250E230D1CDFD5C2DF0D57E3E0FEFD52250E230D1CDF', 'DESEDE/CBC/NoPadding', 'BASE64', ToBase64('0'));

我明白了:

  

“指定的密钥不是此加密的有效密钥:错误的密钥算法,预期的DESede。”

在编码/解码方面,我需要做什么才能使其格式正确?

2 个答案:

答案 0 :(得分:1)

通常情况下,当使用其他语言提供的密钥时,你必须在它上面做一些体操才能进入Base64。

尝试使用关键参数:

 ToBase64(BinaryDecode('FD52250E230D1CDFD5C2DF0D57E3E0FEFD52250E230D1CDF','hex'))

但是,为了使我能够工作,输入字符串需要是8个字节的倍数(因为你指定了NoPadding),并且IV也需要是8个字节的倍数。

所以,这最终为我工作 - 不确定你是否能够在另一端解密它,如果他们指定的IV真的是你在那里列出的那些。

 encrypteded = encrypt('theStrin', ToBase64(BinaryDecode('FD52250E230D1CDFD5C2DF0D57E3E0FEFD52250E230D1CDF','hex')), 'DESEDE/CBC/NoPadding', 'BASE64', ToBase64('0000'));

No IV也起作用(显然有不同的输出):

encrypteded = encrypt('theStrin', ToBase64(BinaryDecode('FD52250E230D1CDFD5C2DF0D57E3E0FEFD52250E230D1CDF','hex')), 'DESEDE/CBC/NoPadding', 'BASE64');

如果您已获得Hex IV,那么您可以这样使用它:

encrypteded = encrypt('theStrin', ToBase64(BinaryDecode('FD52250E230D1CDFD5C2DF0D57E3E0FEFD52250E230D1CDF','hex')), 'DESEDE/CBC/NoPadding', 'BASE64', BinaryDecode("7fe8585328e9ac7b","hex"));

希望这足以让你顺利上路!

答案 1 :(得分:0)

对我而言,唯一似乎是您正在使用的算法值。也许试试这个?

encrypteded = encrypt('theString', 'FD52250E230D1CDFD5C2DF0D57E3E0FEFD52250E230D1CDF', 'DESEDE', 'BASE64', ToBase64('0'));

我不知道/CBC/NoPadding设置是否符合您的要求,但我不认为算法参数会被允许。