加密时出错:java.security.InvalidKeyException:无效AES密钥长度:11字节

加密时出错:java.security.InvalidKeyException:无效AES密钥长度:11字节,java,encryption,Java,Encryption,我在加密时遇到以下代码的异常。 创建的密钥为“[B@29ee9faa". “加密时出错:java.security.InvalidKeyException:无效AES密钥长度:11字节” 此外,我已经在我的jre/lib/security中更新了我的本地策略和美国导出策略 public static String generateKey(String eisId) { String uuidKey = null; try { KeyGenerator

我在加密时遇到以下代码的异常。 创建的密钥为“[B@29ee9faa". “加密时出错:java.security.InvalidKeyException:无效AES密钥长度:11字节”

此外,我已经在我的jre/lib/security中更新了我的本地策略和美国导出策略

  public static String generateKey(String eisId) 
  {
    String uuidKey = null;
    try {

        KeyGenerator gen = KeyGenerator.getInstance("AES");
        gen.init(128); /* 128-bit AES */
        SecretKey secret = gen.generateKey();
        uuidKey = secret.getEncoded().toString();
        System.out.println("uuidKey : "+uuidKey);

        // Store in DB
        // **********************

    } catch (NoSuchAlgorithmException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    return uuidKey;
}

public static SealedObject encryptData(String eisId, SecurityDomainDTO sDObj) 
{
    try
    {
        String secret = generateKey(eisId);
        SecretKeySpec aesKey = new SecretKeySpec(secret.getBytes(), "AES");
        Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
        cipher.init(Cipher.ENCRYPT_MODE, aesKey);
        SealedObject so = new SealedObject(sDObj, cipher);

        return so;
    } 
    catch (Exception e) 
    {
        System.out.println("Error while encrypting: " + e.toString());
    }
    return null;
}
"[B@29ee9faa“字符串是一条重要线索。这是在
字节[]
上调用
toString()
时得到的。它不表示字节数组的内容。相反,它表示内部类型名(“[B”)和对象的标识代码。”

这就是错误:

      uuidKey = secret.getEncoded().toString();
这不是格式化字节数组内容的正确方法

我建议您使用
Base64
类;例如

    Base64.Encoder encoder = Base64.getEncoder();
    String encoded = encoder.encode(bytes);

    ...

    Base64.Decoder decoder = Base64.getDecoder();
    byte[] bytes = decoder.decode(encoded);

toString()
不是这样工作的,无论如何,将字节[]转换为字符串在这里是毫无意义的。这样做会导致java.security.InvalidKeyException:参数丢失“我建议你考虑一下我所说的……关于解码。如果这没有帮助,请提出一个新问题,其中包含更新的代码。当然,我认为这应该是一个不同的问题。