当AndroidKeyStore在AndroidKeyStore中存储私钥和公​​钥时?

时间:2016-12-16 12:58:39

标签: android android-keystore

哪种方法在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();

1 个答案:

答案 0 :(得分:0)

使用AndroidKeyStore生成密钥对时,该密钥对已经自动存储。您可以使用所需的别名(示例中为“ alias”)来检索它。

但是请注意,当您获得私钥时,实际上并没有获得私钥机密。它们留在安全的硬件中,永远不会离开它,因此它们不会泄漏。但是,您将获得一个PrivateKey对象,就可以像拥有秘密一样使用它。您的加密或签名请求将发送到安全硬件,该安全硬件使用机密执行操作并将结果返回给您。