android – 为什么KeyPairGeneratorSpec在API <24上抛出InvalidAlgorithmParameterException

当我在API 24中使用此KeyPairGeneratorSpec对象时,我的课程正常工作.

KeyPairGeneratorSpec spec = new KeyPairGeneratorSpec.Builder(this)
                    .setAlias(KEY_ALIAS)
                    .setSubject(new X500Principal("CN=" + KEY_ALIAS))
                    .setSerialNumber(BigInteger.TEN)
                    .setStartDate(start.getTime())
                    .setEndDate(end.getTime())
                    .build();
            KeyPairGenerator kpg = KeyPairGenerator.getInstance(RSA);
            kpg.initialize(spec);
            keyPair = kpg.generateKeyPair();

当编译低于24时,我收到此错误:

java.security.InvalidAlgorithmParameterException: Only RSAKeyGenParameterSpec supported

我不明白,因为KeyPairGeneratorSpec应该可以从api 18获得?

最佳答案 今天早些时候这个问题以及Pixel模拟器(API 23)引发了“仅支持RSAKeyGenParameterSpec”异常,而Nexus 5X(API 24)则没问题.

可以确认修复是将’AndroidKeyStore’添加为KeyPairGenerator上调用getInstance的第二个参数,如上面提到的@estoke:

即:

KeyPairGenerator.getInstance(“RSA”,“AndroidKeyStore”);

点赞