我正在尝试使用私钥qp[vmauf;c[s.z/;vcS8DMN8H>K6J?dsr56lewqQ4WE?0FR.PV5>sa4pAS5NDF24SDK5SKMLVSX;DSAMKASMSADp[lqwe54352425
加密字符串,但我遇到了这个异常:
java.security.InvalidKeyException: Invalid AES key length: 101 bytes
at com.sun.crypto.provider.AESCrypt.init(AESCrypt.java:87) ~[na:na]
at com.sun.crypto.provider.ElectronicCodeBook.
init(ElectronicCodeBook.java:93)~[na:na]
at com.sun.crypto.provider.CipherCore.init(CipherCore.java:582) ~[na:na]
at com.sun.crypto.provider.CipherCore.init(CipherCore.java:458) ~[na:na]
at com.sun.crypto.provider.AESCipher.
engineInit(AESCipher.java:307) ~[na:na]
at javax.crypto.Cipher.implInit(Cipher.java:797) ~[na:1.8.0]
at javax.crypto.Cipher.chooseProvider(Cipher.java:859) ~[na:1.8.0]
at javax.crypto.Cipher.init(Cipher.java:1229) ~[na:1.8.0]
at javax.crypto.Cipher.init(Cipher.java:1166) ~[na:1.8.0]
at play.api.libs.Crypto$.encryptAES(Crypto.scala:234)
~[play_2.11-2.3.1.jar:2.3.1]
此行引发异常:
Crypto.encryptAES(name, privateKey)
我更改了广告local_policy.jar
和US_export_policy.jar
,但仍无效。
知道出了什么问题吗?
答案 0 :(得分:2)
私钥的长度必须为16个字节。
即使您使用使用应用程序密钥的encryptAES
的重载,它实际上也只会使用前16个字符。为什么? AES的可能密钥长度为128,192和256位。 Play的Crypto
库仅支持128位密钥(16个字符)。