Java 安卓AES/ECB/PKCS7PADDING生成密钥弹跳城堡
我想使用Java 安卓AES/ECB/PKCS7PADDING生成密钥弹跳城堡,java,android,bouncycastle,Java,Android,Bouncycastle,我想使用AES/ECB/PKCS7PADDING生成随机密钥,但java不支持PKCS7填充,在我的算法中,我必须使用相同的填充,bouncy castle确实支持PKCS7PADDING,但我无法理解如何使用该填充生成密钥 我的代码: Security.addProvider(new BouncyCastleProvider()); private byte[] generateSessionKey() throws NoSuchAlgorithmException, NoSuchProv
AES/ECB/PKCS7PADDING
生成随机密钥,但java不支持PKCS7
填充,在我的算法中,我必须使用相同的填充,bouncy castle确实支持PKCS7PADDING
,但我无法理解如何使用该填充生成密钥
我的代码:
Security.addProvider(new BouncyCastleProvider());
private byte[] generateSessionKey() throws NoSuchAlgorithmException, NoSuchProviderException {
KeyGenerator kgen = KeyGenerator.getInstance("AES/ECB/PKCS7PADDING", "BC");
kgen.init(SYMMETRIC_KEY_SIZE);
SecretKey key = kgen.generateKey();
return key.getEncoded();
}
我收到的错误是没有这样的算法AES的密钥生成与填充无关。某些操作模式(如ECB和CBC)需要填充。但键本身并不依赖于模式或填充。因此,您只需使用:
KeyGenerator kgen = KeyGenerator.getInstance("AES", "BC");
这无疑会起作用
不要使用PKCS#7填充,用
“PKCS5Padding”
代替“PKCS7Padding”
请看一看,了解填充机制之间的差异以及Java中的差异
我猜Android使用的是精简的BouncyCastle提供商(这是SpongyCastle闲逛的原因之一),这可以解释Android和JavaSE提供商之间的区别。你为什么要使用ECB?其要求我们无法更改任何给定的算法列表相同的问题KeyGenerator AES/ECB/PKCS5P添加实现未找到,我将尝试SpongyCastle@GaneshP当前位置你没有注意到他写的内容。@JamesKPolk我认为这是一个古老的评论,对答案的接受仍然存在。我改变了一次答案,加入了KeyGenerator的评论。我担心他只关注你答案的后半部分。