- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我们已经看到以下异常的大量涌入,并且仅适用于 Android 7.1.1 (API 25)。 7.1.1 中有什么改变导致失败吗?
java.security.ProviderException: Failed to load generated key pair from keystore
at android.security.keystore.AndroidKeyStoreKeyPairGeneratorSpi.loadKeystoreKeyPair(AndroidKeyStoreKeyPairGeneratorSpi.java:518)
at android.security.keystore.AndroidKeyStoreKeyPairGeneratorSpi.generateKeyPair(AndroidKeyStoreKeyPairGeneratorSpi.java:470)
下面经过清理的代码(可能有轻微的复制粘贴错误)
KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA", "AndroidKeyStore");
String certInfo = String.format(Locale.ROOT, "CN=%s, OU=%s", new Object[]{"KeyName", context.getPackageName()});
generator.initialize(new KeyPairGeneratorSpec.Builder(context)).setAlias("KeyName").setSubject(new X500Principal(certInfo)).setSerialNumber(BigInteger.ONE).setStartDate(start).setEndDate(end).build());
generator.generateKeyPair();
最佳答案
我以前见过这个错误,这很可能是由于 KeyPairGeneratorSpec 的弃用引起的, 对于 API > 23 你应该使用 KeyGenParameterSpec反而。
如果您的目标 API 低于 23,我建议您使用某种机制来根据 API 级别使用不同的规范。
AlgorithmParameterSpec spec;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M){
spec = new KeyGenParameterSpec.Builder(KEY_ALIAS, purposes)
.setCertificateSubject(new X500Principal("CN=" + KEY_ALIAS))
.setCertificateSerialNumber(BigInteger.TEN)
.setCertificateNotBefore(start.getTime())
.setCertificateNotAfter(end.getTime())
.build();
} else {
spec = new KeyPairGeneratorSpec.Builder(Application.getApp().getApplicationContext())
.setAlias(KEY_ALIAS)
.setSubject(new X500Principal("CN=" + KEY_ALIAS))
.setSerialNumber(BigInteger.TEN)
.setStartDate(start.getTime())
.setEndDate(end.getTime())
.build();
}
KeyPairGenerator kpg = KeyPairGenerator.getInstance(KEY_ALGORITHM_RSA, AndroidKeyStore);
kpg.initialize(spec);
kpg.generateKeyPair();
崩溃可能是因为一些制造商可能会在他们最新的 android 构建中删除不推荐使用的方法,这就是它不会在所有使用 API > 23 的设备上崩溃但只会在其中一些设备上崩溃的原因。
此事已讨论here在 SO 之前。
关于android - Android 7.1.1 中的 KeyPairGenerator.generateKeyPair(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41815601/
我正在尝试创建一个使用 RSA 来加密消息的小型消息系统,但由于某种原因,代码无法识别 KeyPairGenerator 类,所以我一开始就卡住了。到目前为止,我的代码是: public class
我的 java 代码有问题。我正在尝试加密文件。但是,当我运行我的 java 代码时,我得到“java.security.InvalidKeyException: Invalid AES key le
询问 KeyPairGenerator.initialize() 方法需要一个 SecureRandom 实例,它的初始化成本很高。 Java Doc 没有提到它是线程安全的。我能找到的就是a com
我使用 KeyPairGenerator 生成 RSA key 对,我注意到它始终生成完全匹配的 key ,而不是应有的随 secret 钥?也许有人知道为什么会这样? 我的代码现在看起来像这样: p
当测试我在 Eclipse 上使用 JUnit 创建的 Java 类时,我收到一条错误消息,告诉我:“源附件不包含文件 KeyPairGenerator.java 的源代码”。我刚刚安装了 Java
我有一个生成公钥+私钥对的客户端(安卓设备)。它将公钥发送到服务器,服务器应使用公钥加密一些数据并将其返回,以便客户端稍后可以使用私钥对其进行解密。我的 PHP 代码记录了一条警告,指出我提供的公钥无
专家, 是否可以使用Android KeyPairGenerator 类在不同设备上生成相同的 key 对?例如,通过覆盖 SecureRandom 类来生成相同的共享 key 。 非常感谢任何指导。
当我使用 keytool 生成带有 ECC 的 key 时,我得到了这个错误: Error keytool: java.security.NoSuchAlgorithmException: EC Ke
我有一些 Java 代码,当我运行函数 KeyPairGenerator.genKayPair() 时,它会运行 40 秒或更长时间。如何改变这种状况?如果我跑 openssl req -x509 -
我正在用 Java 创建一个加密安全的 IM 应用程序。第一步(建立连接后)是交换公钥(RSA-4096),以便对方可以创建对称 key (AES-256),用对方的公钥对其进行加密,通过连接发送,其
我正在尝试使用java.security获取java中RSA加密的私钥和公钥。无论我在哪里谷歌,我总是收到同样的错误,说NoSuchAlgorithException。 class secret {
我曾尝试使用 EdDSA 算法,以便使用 jar eddsa 0.3.0 生成 key 。但是,当我尝试执行 KeyPairGenerator.getInstance("Ed25519"); 时,我得
基本上,我有一个 RNG 向数据库提供随机数,我想在生成 key 对时使用这些随机数。 据我所知,到目前为止,您可以初始化提供随机源(SecureRandom 对象)的 KeyPairGenerato
这是我的程序以图像形式执行的流程。我认为这些图像是仅次于视频的最能充分描述我的问题的东西。 这里没有发生任何异常情况。控制位于 while 循环,并且 keyPair 为空。 即使 keyPairGe
我正在制作一个为用户生成 key 对的应用程序。但是在每个设备中, key 都是相同的。这是我的代码: public KeyPair generateKeys() { KeyPair keyP
我遇到了运行 Android 应用程序时观察到的异常 - 当我将下面的代码作为 JUnit 运行时,它不会发生。 java.security.NoSuchAlgorithmException: ECD
首先,我试图就安全问题提出这个问题——我得到了一些赞成票,但似乎已经一周没有答案了。我知道这是与 openssl 相关的,但是它源于使用 java KeyPairGenerator 对象,所以我觉得它
我想使用 Edwards 曲线“Curve41417”( safecurves ) 来生成 key 对。 现在我已将其转换为 Weierstrass 格式并尝试了以下源代码: public class
我们已经看到以下异常的大量涌入,并且仅适用于 Android 7.1.1 (API 25)。 7.1.1 中有什么改变导致失败吗? java.security.ProviderException: F
我正在使用 java.security.KeyPairGenerator 生成 RSA key 对,然后尝试通过 Jsch(0.1.49) 中提供的 KeyPair 类加载私钥。代码: public
我是一名优秀的程序员,十分优秀!