gpt4 book ai didi

java - 安卓 API 22 | java.security.NoSuchAlgorithmException : KeyGenerator RSA implementation not found

转载 作者:行者123 更新时间:2023-11-29 06:51:27 26 4
gpt4 key购买 nike

我有一个要发布的 Android 应用程序,今天尝试在运行 API 22 的 Moto G 设备上遇到以下错误:

java.security.NoSuchAlgorithmException: KeyGenerator RSA implementation not found

已知同一个应用在较新的API 23+设备上正常流畅运行

查询谷歌文档,看到API+1后支持AES算法,不明白是怎么回事。

有人遇到过这个问题吗?

顺便说一下,我正在尝试生成 key 来加密 Realm 数据。

private static final String KEYSTORE_PROVIDER_NAME = "AndroidKeyStore";
public void generateKeyInKeystore() {
final KeyGenerator keyGenerator;
try {
keyGenerator = KeyGenerator.getInstance(
KeyProperties.KEY_ALGORITHM_AES,
KEYSTORE_PROVIDER_NAME);
} catch (NoSuchAlgorithmException | NoSuchProviderException e) {
throw new RuntimeException(e);
}

final KeyGenParameterSpec keySpec;

try {
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
keySpec = new KeyGenParameterSpec.Builder(
KEY_ALIAS,
KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT)
.setBlockModes(KeyProperties.BLOCK_MODE_CBC)
.setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_PKCS7)
.setUserAuthenticationRequired(false)
.build();
keyGenerator.init(keySpec);
}
} catch (InvalidAlgorithmParameterException e) {
throw new RuntimeException(e);
}
keyGenerator.generateKey();

}

Here a Stack Trace with device info

最佳答案

好吧,根据 Android 官方开发人员指南,由于您的密码组合是“AES/CBC/PKCS7Padding”,因此它支持 API 级别 23+。由于您的应用运行 API 级别 22,因此它不支持“AES/CBC/PKCS7Padding”密码。

如果您想支持以下 API 级别,请考虑使用密码“RSA/ECB/NoPadding”或“RSA/ECB/PKCS1Padding”之一。他们确实支持 API 级别 18+

Android Keystore SystemCypherKeyGenerator 部分中找到更多详细信息|官方指南。

关于java - 安卓 API 22 | java.security.NoSuchAlgorithmException : KeyGenerator RSA implementation not found,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46942733/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com