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的评论。我担心他只关注你答案的后半部分。