AES Decryption iv error:必须是一个类[B值

时间:2015-04-06 14:51:48

标签: encryption coldfusion aes coldfusion-10

我从供应商处收到以下数据,以便我们可以在最后解密数据。

Algorithm : AES 256bit
Key : test123xxxxxx
Key Length : 32
Initialize Vector: ei8B3hcD8VhnN_cK
Built in methods : YES (From inbuilt class CommonCryptor.h method with variable CCCryptorStatus).

请注意我不知道最后一行是否与我们的解密有关。

我在一个我们应该能够解码的示例字符串上尝试了以下内容。

<cfset item = "eLgExhcox5Ro1kPB1OlJP1w6tEJ3x94gM/QJS5dCZkyjEVfNjIid3R7JP4l1WZD1" />

<cfoutput>#decrypt(#item#, #key#, 'AES', 'Base64', #iv# )#</cfoutput>

我收到的错误是:参数5的值,当前为ei8B3hcD8VhnN_cK,必须是[B值。的类别,我找不到任何关于它的内容。

我也假设编码是Base64,我从供应商那里找到了。还有什么我不在想的。

1 个答案:

答案 0 :(得分:2)

我的猜测是抱怨IV值不是二进制的。如果您的IV值是base64字符串,请使用binaryDecode(yourIVString, "base64")获取二进制值。

  

一个班级[B值

[B指的是预期的对象:一个字节数组。显然[B"binary name [...] as specified by the Java Language Specification (§13.1)"。如果您创建byte[]数组并转储类名称,您将看到同样的事情:

 // show binary and canonical class names
 arr = javacast("byte[]", [1]);
 writeOutput("name="& arr.getClass().name);
 writeOutput("<br>canonicalName="& arr.getClass().canonicalName);

旁注,如果您使用的是256位密钥,请确保已安装(JCE) Unlimited Strength Jurisdiction Policy Files first。否则,您最多只能使用128位密钥。