Android 在Api级别=23下生成RSA密钥对 KeyPairGenerator spec = KeyPairGenerator.getInstance( KeyProperties.KEY_ALGORITHM_RSA, Constants.KEYSTORE_NAME); KeyGenParameterSpec keyGenParameterSpec = new KeyGenParameterSpec.Builder( keyStoreAlias, KeyProperties.PURPOSE_DECRYPT | KeyProperties.PURPOSE_ENCRYPT) .setKeySize(2048) .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_RSA_PKCS1) .setKeyValidityStart(notBefore.getTime()) .setKeyValidityEnd(notAfter.getTime()) .setCertificateSubject(new X500Principal("CN=test")) .setCertificateSerialNumber(BigInteger.ONE) .build(); spec.initialize(keyGenParameterSpec); KeyPair keyPair = spec.generateKeyPair();

Android 在Api级别=23下生成RSA密钥对 KeyPairGenerator spec = KeyPairGenerator.getInstance( KeyProperties.KEY_ALGORITHM_RSA, Constants.KEYSTORE_NAME); KeyGenParameterSpec keyGenParameterSpec = new KeyGenParameterSpec.Builder( keyStoreAlias, KeyProperties.PURPOSE_DECRYPT | KeyProperties.PURPOSE_ENCRYPT) .setKeySize(2048) .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_RSA_PKCS1) .setKeyValidityStart(notBefore.getTime()) .setKeyValidityEnd(notAfter.getTime()) .setCertificateSubject(new X500Principal("CN=test")) .setCertificateSerialNumber(BigInteger.ONE) .build(); spec.initialize(keyGenParameterSpec); KeyPair keyPair = spec.generateKeyPair();,android,rsa,Android,Rsa,我使用这段代码在Api级别>=23下生成RSA密钥对 KeyPairGenerator spec = KeyPairGenerator.getInstance( KeyProperties.KEY_ALGORITHM_RSA, Constants.KEYSTORE_NAME); KeyGenParameterSpec keyGenParameterSpec = new KeyGenParamete

我使用这段代码在Api级别>=23下生成RSA密钥对

 KeyPairGenerator spec = KeyPairGenerator.getInstance(
                            KeyProperties.KEY_ALGORITHM_RSA, Constants.KEYSTORE_NAME);

                    KeyGenParameterSpec keyGenParameterSpec = new KeyGenParameterSpec.Builder(
                            keyStoreAlias, KeyProperties.PURPOSE_DECRYPT | KeyProperties.PURPOSE_ENCRYPT)
                            .setKeySize(2048)
                            .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_RSA_PKCS1)
                            .setKeyValidityStart(notBefore.getTime())
                            .setKeyValidityEnd(notAfter.getTime())
                            .setCertificateSubject(new X500Principal("CN=test"))
                            .setCertificateSerialNumber(BigInteger.ONE)
                            .build();

                    spec.initialize(keyGenParameterSpec);
KeyPair keyPair = spec.generateKeyPair();
若我试图在api级别<23的情况下构建此代码,编译器会说调用至少需要api级别23

如何转换此代码以使其在api级别<23的情况下工作


setKeySize、setEncryptionPaddings。。这些函数在api级别<23时不可用。例如,如何在api级别14中设置加密填充?

您可以在级别<23时使用海绵城堡


检查这个答案,了解关于Android Crypto和JCE的更深入的知识

,它们没有告诉我们错误指的是哪个调用和哪一行?从文档中可以看出,这个类直到API 23才被添加。因此,只需对常量进行硬编码即可。这些值同样在文档中提供,或者使用这些常量创建您自己的类。@PresidentJamesMoveonPolk.setKeySize.setEncryptionPaddings。。所有这些都需要API级别23。如何设置API级别14的填充物?API级别14!!!那时我还有头发。无论如何,KeyGenParameterSpec和方法setKeySize等实际上是一些限制,旨在通过只允许对密钥执行某些操作来提高安全性。回到Api级别14,您可以随心所欲。使用生成密钥