【问题标题】:Coldfusion 9 Encryption Key from Java Byte Array来自 Java 字节数组的 Coldfusion 9 加密密钥
【发布时间】:2010-11-04 02:27:22
【问题描述】:

我正在开展一个项目,我们在 C#、Java 和 ColdFusion 应用程序之间传递加密数据。为 256 位 AES 加密生成密钥和 iv。我有以下数组,我需要在 ColdFusion 9 中将其转换为可用键

密钥的 Java 代码

new byte[]{
              (byte)172, (byte)181, (byte)241, (byte)21, (byte)129,
              (byte)236, (byte)96, (byte)46, (byte)92, (byte)211, 
              (byte)187, (byte)106, (byte)90,(byte)69, (byte)29,
              (byte)186, (byte)99, (byte)65, (byte)134, (byte)125,
              (byte)218,(byte)117, (byte)9, (byte)223, (byte)13,
              (byte)207, (byte)20, (byte)62, (byte)31,(byte)226, (byte)129, (byte)33
        }

要加密的 ColdFusion 代码(似乎无法全部显示在这里):

<cfset awsSecret = "[172,181,241,21,129,236,96,46,92,211,187,106,90,69,29,186,99,65,134,125,218,117,9,223,13,207,20,62,31,226,129,33]"


使用 .getBytes() 和 base64 编码 - 我也得到一个 113 字节的密钥。任何帮助都会很棒!

【问题讨论】:

    标签: encryption coldfusion aes


    【解决方案1】:

    一种方法是将 int 值转换为字节数组,然后转换为 base64

    <cfset ints = [172,181,241,21,129,236,96,46,92,211,187,106,90,69,29,186,99,65,134,125,218,117,9,223,13,207,20,62,31,226,129,33]>
    <cfset bytes = []>
    <cfloop array="#ints#" index="i">
        <cfset arrayAppend(bytes, javacast("int", i).byteValue())>
    </cfloop>
    <cfset keyAsBase64 = BinaryEncode(javacast("byte[]", bytes), "base64")>
    

    【讨论】:

      【解决方案2】:

      谢谢!这非常有效!如果我尝试将相同的逻辑应用于初始化向量,它就不起作用。我收到一条错误消息“IV 长度错误:必须为 16 个字节长。”

      IV 的数组是:

      getIV = [125,56,31,217,204,10,29,154,162,142,127,89,77,225,31,100]
      

      【讨论】:

      • IV 不需要在 base64 中。您是否只是传入原始字节,即 javacast("byte[]", bytes)
      猜你喜欢
      • 1970-01-01
      • 2018-08-19
      • 1970-01-01
      • 2017-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多