java.security AES encryption key length

2020-07-20 04:56发布

问题:

When the key length is 128 bits,everything works. But I got the following exception when I use a key of length 192 or 256 bits.

java.security.InvalidKeyException: Illegal key size or default parameters
at javax.crypto.Cipher.a(DashoA13*..)
at javax.crypto.Cipher.a(DashoA13*..)
at javax.crypto.Cipher.a(DashoA13*..)
at javax.crypto.Cipher.init(DashoA13*..)
at javax.crypto.Cipher.init(DashoA13*..)

I found this Java Security: Illegal key size or default parameters?. But after I download the jar files and put it in ${java.home}/lib/security/, I still got the same exception.

回答1:

Java comes with a default maximum strength of 128 bits.

What you need is a set of files called Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files and is currently available at the Java SE download page. This zip file contains a couple of policy jars, which you need copy over the top of the ones already in the {java.home}/jre/lib/security directory of your JRE.

This will let you change the key strength above 128 bits



回答2:

What Java implementation are you using?

If you look at the docs (like here), you can see that they might only support specific key lengths. This one only supports 128 bit.