哪种方法在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/