android - AndroidKeyStore什么时候在AndroidKeyStore中存储私钥和公​​钥?

标签 android android-keystore

AndroidKeyStore 中哪个方法存储私钥和公​​钥?

我已经实现了以下代码来初始化 keystore 并生成私钥和公钥。

KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore");
keyStore.load(null);

KeyPair keyPair;
Calendar start = Calendar.getInstance();
Calendar end = Calendar.getInstance();
end.add(Calendar.YEAR, 50);

KeyPairGenerator generator= KeyPairGenerator.getInstance("RSA","AndroidKeyStore");

KeyPairGeneratorSpec keyPairGeneratorSpec = new KeyPairGeneratorSpec.Builder(context).
                        setAlias("alias").
                        setSubject(new X500Principal("O=Authority")).
                        setSerialNumber(BigInteger.ONE).
                        setStartDate(start.getTime()).
                        setEndDate(end.getTime()).build();


if (generator != null) {
      generator.initialize(keyPairGeneratorSpec);
}
keyPair = generator.generateKeyPair();

最佳答案

对于你的问题,这一行 generator.generateKeyPair(); 实现 key 对生成和存储过程。

java.security.KeyPairGenerator 中看到这样的代码时,您可能会感到困惑
公共(public) key 对生成 key 对(){ //... 返回空值; }

但实际上因为 KeyPairGenerator 是一个抽象类,这里使用的“真实”类是 java.security.KeyPairGenerator$Delegate,委托(delegate) generateKeyPair,如 this

您也可以在“AndroidKeyStore”中检查此过程前后别名列表的差异。

我想分享有关如何查看任何 keystore 的别名列表的要点。希望它可以帮助您测试:https://gist.github.com/davidkhala/4aa1d6b44f287699aeac028786633c7a

关于android - AndroidKeyStore什么时候在AndroidKeyStore中存储私钥和公​​钥?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41184968/

相关文章:

java - 用 Paint 给位图着色?

android - 如何使 Android GridView - 垂直间距动态?

android - 我重置了我的 keystore 密码

Android KeyStore 用于存储用于加密/解密的 SecretKey

android - 在市场上上传 apk 时,apk 必须使用与以前版本相同的证书进行签名

java - 忽略Proguard中要优化的接口(interface)抽象方法?

Android 如何在谷歌地图上显示标记之间的路线

android - 在我的 Android Activity 中使用 BufferedImage 和 ImageIO 类

Android android.credentials.UNLOCK 在没有密码的情况下初始化 keystore

android - 添加新的生物特征时使 SecretKey 无效