FUG*_*AZI 15 security keystore android-4.3-jelly-bean
我从一个Web服务(由我自己制作)收到一个基本64字符串编码的RSA PrivateKey PKCS#8.我的Android应用必须将此密钥安全地保存在手机中.
从Android的4.3版本开始,可以使用新的KeyStore API保存密钥.我发现了一篇包含代码示例的文章,该文章展示了如何使用存储密钥所需的规范生成KeyPair.然后恢复钥匙.
// 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();
// in another part of the app, access the keys
KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore");
keyStore.load(null);
KeyStore.PrivateKeyEntry keyEntry = (KeyStore.PrivateKeyEntry)keyStore.getEntry("key1", null);
RSAPublicKey pubKey = (RSAPublicKey)keyEntry.getCertificate().getPublicKey();
RSAPrivateKey privKey = (RSAPrivateKey) keyEntry.getPrivateKey();
Run Code Online (Sandbox Code Playgroud)
但我不明白如何保存现有密钥.有谁能够帮我?提前致谢
在KeyStore私钥中必须与证书一起存储(甚至是伪造的自签名证书).要将密钥存储在AndroidKeyStore您应该按照以下步骤操作:
PrivateKey实例现在,您可以将密钥添加到密钥库.
PrivateKey myKey = getKey();
X509Certificate certificate = getCertificate();
KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore");
keyStore.load(null);
keystore.setKeyEntry("anAlias", myKey, null, new Certificate[] { certificate });
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11921 次 |
| 最近记录: |