4

当我在 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 获得?

4

1 回答 1

3

今天早些时候也遇到了这个问题,Pixel emulator (API 23) 引发了“仅支持 RSAKeyGenParameterSpec”异常,而 Nexus 5X (API 24) 很好。

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

IE:

KeyPairGenerator.getInstance("RSA", "AndroidKeyStore");

于 2017-07-19T11:52:11.763 回答