gpt4 book ai didi

android - 为什么 KeyPair.getPrivate().getEncoded() 为空?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:42:08 25 4
gpt4 key购买 nike

public KeyPair generateKeyPair(@NonNull Context context, @NonNull String alias) {
Calendar startDate = Calendar.getInstance();
Calendar endDate = Calendar.getInstance();
endDate.add(Calendar.YEAR, 1);

KeyPairGenerator keyPairGenerator;
try {
keyPairGenerator = KeyPairGenerator.getInstance("RSA", "AndroidKeyStore");
AlgorithmParameterSpec spec;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
spec = new KeyGenParameterSpec.Builder(alias, KeyProperties.PURPOSE_SIGN | KeyProperties.PURPOSE_VERIFY)
.setCertificateNotBefore(startDate.getTime())
.setCertificateNotAfter(endDate.getTime())
.setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_RSA_PKCS1)
.setDigests(KeyProperties.DIGEST_SHA256, KeyProperties.DIGEST_SHA512)
.build();
} else {
spec = new KeyPairGeneratorSpec.Builder(context)
.setAlias(alias)
.setSubject(new X500Principal("CN=fake"))
.setSerialNumber(BigInteger.ONE)
.setStartDate(startDate.getTime())
.setEndDate(endDate.getTime())
.build();
}
keyPairGenerator.initialize(spec);
} catch (Exception e) {
e.printStackTrace();
return null;
}
return keyPairGenerator.generateKeyPair();
}

我知道 privateKey.getEncoded 可以为空,但如何获取 privateKey base64 值?

最佳答案

如果您使用的是基于硬件加密设备的提供程序 AndroidKeyStore它已被设置为不在其外部发布私钥。因此,私钥上的 Key.getEncoded() 实际上可能会返回 null。更多详情 here

关于android - 为什么 KeyPair.getPrivate().getEncoded() 为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41219011/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com