Android AES/欧洲央行/PKCS7PADDING 生成关键充气城堡

标签: Java Android
发布时间: 2017/3/19 4:42:08
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我想要生成随机密钥使用 AES/ECB/PKCS7PADDING 但 java 不支持 PKCS7 填充物和我的算法我都要使用相同的填充,充气城堡并支持 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();
}

我收到的没有这种算法的错误

解决方法 1:

为 AES 密钥生成并没有做任何事情与填充。填充所需的几种模式 ECB 和 CBC 等操作。但密钥本身并不依赖模式填充。所以你应该只使用︰

KeyGenerator kgen = KeyGenerator.getInstance("AES", "BC");

这无疑会工作。


不要使用 PKCS #7 填充,替换 "PKCS5Padding""PKCS7Padding"

请看这里了解填充机制和在这里为 Java 的差异之间的区别。

我猜 Android 下充气城堡提供程序 (它是 SpongyCastle 磨磨蹭蹭的原因之一),这将解释之间的差异使用剥离 Android 和 Java SE 提供程序。

赞助商