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

我实现了以下代码以初始化密钥库并生成私钥和公钥。

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();实现密钥对生成和存储过程。

java.security.KeyPairGenerator中看到这样的代码时,您可能会感到困惑
public KeyPair generateKeyPair() { // ... return null; }

但是实际上,由于KeyPairGenerator是一个抽象类,因此这里使用的“ true”类是
java.security.KeyPairGenerator$Delegate,像this一样委派generateKeyPair

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

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

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

10-11 22:29