T.V*_*ert 5 android android-keystore
我需要在SharedPreferences中存储一些私有用户的值.
我看到了这篇文章:https: //medium.com/@ericfu/securely-storing-secrets-in-an-android-application-501f030ae5a3
它解释了您需要做的大部分事情,但似乎缺少关于如何将私钥和公钥(对于API <23)保存到密钥库中的部分.
因此,如果我们有API版本18-22,我们会执行以下操作:我们打开一个密钥库
KeyStore keyStore = KeyStore.getInstance(AndroidKeyStore);
keyStore.load(null);
Run Code Online (Sandbox Code Playgroud)
我们生成密钥对
Calendar start = Calendar.getInstance();
Calendar end = Calendar.getInstance();
end.add(Calendar.YEAR, 30);
KeyPairGeneratorSpec spec = new KeyPairGeneratorSpec.Builder(mContext)
.setAlias(KEY_ALIAS)
.setSubject(new X500Principal("CN=" + KEY_ALIAS))
.setSerialNumber(BigInteger.TEN)
.setStartDate(start.getTime())
.setEndDate(end.getTime())
.build();
KeyPairGenerator kpg = KeyPairGenerator.getInstance(KeyProperties.KEY_ALGORITHM_RSA, AndroidKeyStore);
kpg.initialize(spec);
mEncryptionPair = kpg.generateKeyPair();
Run Code Online (Sandbox Code Playgroud)
现在我们可以使用公钥加密数据和私钥来解密它.但是我们需要将密钥对保存到密钥库并稍后检索它.我该怎么做?
我还担心Android Studio为什么会显示此行的警告
KeyPairGenerator kpg = KeyPairGenerator.getInstance(KeyProperties.KEY_ALGORITHM_RSA, AndroidKeyStore);
Run Code Online (Sandbox Code Playgroud)
警告:
Field requires API level 23 (current min is 14): android.security.keystore.KeyProperties#KEY_ALGORITHM_RSA
Run Code Online (Sandbox Code Playgroud)
我知道,这个问题太老了,但我也遇到了同样的问题。如果有人需要,这是解决方案
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
spec = new KeyPairGeneratorSpec.Builder(mContext)
.setAlias(alias)
.setSubject(new X500Principal("CN=" + alias))
.setSerialNumber(BigInteger.valueOf(1337))
.setStartDate(start.getTime())
.setEndDate(end.getTime())
.build();
} else {
spec = new KeyGenParameterSpec.Builder(alias, KeyProperties.PURPOSE_SIGN)
.setCertificateSubject(new X500Principal("CN=" + alias))
.setDigests(KeyProperties.DIGEST_SHA256)
.setSignaturePaddings(KeyProperties.SIGNATURE_PADDING_RSA_PKCS1)
.setCertificateSerialNumber(BigInteger.valueOf(1337))
.setCertificateNotBefore(start.getTime())
.setCertificateNotAfter(end.getTime())
.build();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
764 次 |
| 最近记录: |