Crypto.encryptAES()抛出InvalidKeyException

时间:2014-07-23 16:29:08

标签: scala encryption playframework-2.0

我正在尝试使用私钥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.jarUS_export_policy.jar,但仍无效。

知道出了什么问题吗?

1 个答案:

答案 0 :(得分:2)

documentation州:

  

私钥的长度必须为16个字节。

即使您使用使用应用程序密钥的encryptAES的重载,它实际上也只会使用前16个字符。为什么? AES的可能密钥长度为128,192和256位。 Play的Crypto库仅支持128位密钥(16个字符)。