【发布时间】:2017-06-01 09:40:09
【问题描述】:
我正在开发一个应用程序,使用 Android KeyStore API 调用来加密一些字符串值。我的目标是 API 级别 18 及更高级别。我的代码中有一个 if else 块,它针对 API 级别 18 到 23。我的问题是我要么必须在块中使用不推荐使用的方法调用(如下所示是我的 if 块)
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2 &&
Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
KeyPairGenerator kpg = KeyPairGenerator.getInstance(
KeyProperties.KEY_ALGORITHM_EC, "AndroidKeyStore");
kpg.initialize(new KeyPairGeneratorSpec.Builder(alias, keyProperties.PURPOSE_SIGN | KeyProperties.PURPOSE_VERIFY)
.setDigests(KeyProperties.DIGEST_SHA256,KeyProperties.DIGEST_SHA512)
.build());
KeyPair kp = kpg.generateKeyPair();
}
由于不推荐使用方法调用,因此在 IDE 中会出现一条穿过它的线。但是,它确实针对构建此代码运行的 api 级别?
如果我切换到KeyGenParameterSpec.builder(),我会收到编译时错误,因为该对象只能在 API 级别 23 及更高级别上使用。我的应用针对 API 级别 18 及以上?
有没有一种方法可以在我的KeyStore 中生成密钥对条目,而无需使用已弃用的方法调用或不必移动到 API 级别 23 及更高级别?
提前致谢!
【问题讨论】:
标签: android android-keystore android-api-levels