我已经按照以下代码生成了存储在KeyStore中的密钥对
// generate a key pair
Context ctx = getContext();
Calendar notBefore = Calendar.getInstance()
Calendar notAfter = Calendar.getInstance();
notAfter.add(1, Calendar.YEAR);
KeyPairGeneratorSpec spec = new KeyPairGeneratorSpec.Builder(ctx)
.setAlias("key1")
.setSubject(
new X500Principal(String.format("CN=%s, OU=%s", alais,
ctx.getPackageName())))
.setSerialNumber(BigInteger.ONE).setStartDate(notBefore.getTime())
.setEndDate(notAfter.getTime()).build();
KeyPairGenerator kpGenerator = KeyPairGenerator.getInstance("RSA", "AndroidKeyStore");
kpGenerator.initialize(spec);
KeyPair kp = kpGenerator.generateKeyPair();
通过这种方式,生成了我的密钥对并将其存储到Keystore中,但在调用此函数时:getPrivateKey.encoded()
,它将返回一个空字节数组。
我的意愿是我想要正常生成,我可以获得PrivateKey和PublicKey Encode(这是我自己的目的)。然后我想将它们存储到KeyStore中以保密。
我试过这个:keyStore.setEntry(alias,privateKey,cert)但是由于错误的params可能会出现异常。我不明白我应该从哪个证书中获取证书? 我非常感谢你的评论