Java 支持API级别14及以下的Android密钥库系统
我想在api级别14及以下的密钥库中存储一些密钥。我找到了使用KeyPairGeneratorSpec和keychain生成密钥库的代码,但在api级别18和更高级别上支持这些代码Java 支持API级别14及以下的Android密钥库系统,java,android,android-keystore,Java,Android,Android Keystore,我想在api级别14及以下的密钥库中存储一些密钥。我找到了使用KeyPairGeneratorSpec和keychain生成密钥库的代码,但在api级别18和更高级别上支持这些代码 KeyPairGeneratorSpec spec = new KeyPairGeneratorSpec.Builder(this) .setAlias(alias) .setSubject(new X500Principal("CN=Sample Name, O=Android Au
KeyPairGeneratorSpec spec = new KeyPairGeneratorSpec.Builder(this)
.setAlias(alias)
.setSubject(new X500Principal("CN=Sample Name, O=Android Authority"))
.setSerialNumber(BigInteger.ONE)
.setStartDate(start.getTime())
.setEndDate(end.getTime())
.build();
KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA", "AndroidKeyStore");
generator.initialize(spec);
KeyPair keyPair = generator.generateKeyPair();
我尝试了上面的代码,但它不支持低于api级别18的代码。
任何帮助都将不胜感激 没有支持API级别14及以下的Android密钥库系统。API级别18中引入了 但是,API(Android密钥库系统使用的)可以从API级别14或更高级别获得(尽管现在已弃用)。代码中使用的
KeyPairGeneratorSpec
类是此API的一部分(应在API级别23及更高级别中使用)。没有Android提供的API在API级别14以下工作
您的代码(不带“AndroidKeyStore”
提供程序参数)将在API级别14及更高级别上工作
KeyPairGeneratorSpec spec = new KeyPairGeneratorSpec.Builder(this)
.setAlias(alias)
.setSubject(new X500Principal("CN=Sample Name, O=Android Authority"))
.setSerialNumber(BigInteger.ONE)
.setStartDate(start.getTime())
.setEndDate(end.getTime())
.build();
KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA", "AndroidKeyStore");
generator.initialize(spec);
KeyPair keyPair = generator.generateKeyPair();
对于API级别14及以下,如,您可以考虑安装第三方安全API;例如。根据,您应该改用KeyGenParameterSpec。例如(对于RSA签名密钥):