猿问

InvalidKeyException非法密钥大小

InvalidKeyException非法密钥大小

我有一个在我的开发MacBookPro上运行很好的测试,但是无法在持续集成TeamCity服务器中运行。

错误如下:

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

开发盒和TeamCity都使用Java1.6,我使用BouncyCastleLibrary来满足特殊AES加密的需要。

守则如下:

private byte[] aesEncryptedInfo(String info) throws UnsupportedEncodingException, IllegalBlockSizeException, BadPaddingException, 
InvalidKeyException, NoSuchAlgorithmException, NoSuchPaddingException, InvalidParameterSpecException, InvalidAlgorithmParameterException,
 NoSuchProviderException {
    Security.addProvider(new BouncyCastleProvider());
    SecretKey secret = new SecretKeySpec(CUSTOMLONGSECRETKEY.substring(0, 32).getBytes(), "AES");
    Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding", "BC");
    cipher.init(Cipher.ENCRYPT_MODE, secret, new IvParameterSpec(VECTOR_SECRET_KEY.getBytes()));
    return cipher.doFinal(info.getBytes("UTF-8"));}



蝴蝶刀刀
浏览 565回答 3
3回答

阿波罗的战车

我也有类似的问题,但在我的例子中,有一个路径错误。Java_HOME是jdk1.6.0_18,所以我将两个罐子放入jdk1.6.0_18/lib/security,但在jdk1.6.0_18中,jre目录。这两个文件都应该放进去jdk1.6.0_18/jre/lib/security.

慕妹3242003

除了安装策略文件之外,还要确保CUSTOMLONGSECRETKEY...getBytes()确实会产生32个字节数组。我会用CUSTOMLONGSECRETKEY.getBytes(some encoding)并从中得到前32个字节。更好的是,使用完整的秘密密钥为AES派生出您所需大小的密钥。
随时随地看视频慕课网APP

相关分类

Java
我要回答