如何在java中将128 AES加密转换为256

时间:2017-11-14 11:31:59

标签: java encryption cryptography aes

我正在尝试将128 AES加密转换为java中的256.Previously我使用的126并且工作正常,但我要将加密升级到256.这是我以前用于128的代码< / p>

     private  Key generateKey() throws Exception {

     SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");

      char[] password = listOfDecodedkeys.get(1).toCharArray();
      byte[] salt = listOfDecodedkeys.get(2).getBytes(AbstractSecurity.UTF_ENCODING);
      KeySpec spec = new PBEKeySpec(password, salt, 65536, 128);
      SecretKey tmp = factory.generateSecret(spec);
      byte[] encoded = tmp.getEncoded();
      return new SecretKeySpec(encoded, "AES");

  }

我现在正在使用

       SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256");

我也将keySpec更改为256

KeySpec spec = new PBEKeySpec(password, salt, 65536, 256);

但是当我试图运行时,我收到了NoSuchAlgorithmException异常。这是完整的堆栈跟踪

 Exception in thread "main" java.security.NoSuchAlgorithmException: PBKDF2WithHmacSHA256 SecretKeyFactory not available
at javax.crypto.SecretKeyFactory.<init>(Unknown Source)
at javax.crypto.SecretKeyFactory.getInstance(Unknown Source)
at com.aes.security.AbstractSecurity.generateKey(AbstractSecurity.java:193)
at com.aes.security.AbstractSecurity.getCipher(AbstractSecurity.java:182)
at com.aes.security.SecurityService.encrypt(SecurityService.java:76)
at com.aes.security.SecurityService.main(SecurityService.java:165)

请帮助我不熟悉加密。

1 个答案:

答案 0 :(得分:0)

JRE / JDK的标准版本受出口限制。这还包括不允许在标准版本中提供某些加密算法。

对于那些被允许使用更强大的加密技术的人来说,有Java Cryptography Extensions。如果您将这些安装到您的JRE / JDK,您也可以使用例如带有256位密钥的AES。

编辑:更好地解释为什么要安装JCE。