【发布时间】:2018-11-14 18:21:43
【问题描述】:
我正在尝试将 RSA 加密与 KeyStore 一起使用,我需要为 KeyPairGenerator 指定参数,我在这里迷路了。 KeyPairGeneratorPair 有点简单,但我不明白 KeyGenParameterSpec for API>=23
这就是我所做的,我想我得到了 else 部分的所有内容,但现在我对 KeyGenParameterSpec 感到困惑
RSAKeyGenParameterSpec 中的公共指数究竟是多少?
我应该在.setDigests 中指定哪些摘要?
还有 .setBlockMode() 方法可以调用,因为我使用的是 RSA 和 RSA/None/OAEPWithSHA1AndMGF1Padding要设置哪个块模式?欧洲央行、加拿大央行?
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
generator.initialize(new KeyGenParameterSpec.Builder("PrivateKey", KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT)
.setAlgorithmParameterSpec(new RSAKeyGenParameterSpec(2048, RSAKeyGenParameterSpec.F4))
.setDigests(KeyProperties.DIGEST_SHA1,
KeyProperties.DIGEST_SHA256)
.setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_RSA_OAEP)
.setCertificateSerialNumber(BigInteger.ONE)
.setCertificateSubject(new X500Principal("CN=" + "PrivateKey"))
.setCertificateNotBefore(calendar.getTime())
.setCertificateNotAfter(endCalendar.getTime())
.setKeySize(2048).build());
} else {
generator.initialize(new KeyPairGeneratorSpec.Builder(MainActivity.this)
.setAlias("PrivateKey")
.setSerialNumber(BigInteger.ONE)
.setSubject(new X500Principal("CN=" + "PrivateKey"))
.setStartDate(calendar.getTime())
.setEndDate(endCalendar.getTime())
.setKeySize(2048).build()
);
}
Cipher cipher = Cipher.getInstance("RSA/None/OAEPWithSHA1AndMGF1Padding");
【问题讨论】:
标签: android encryption rsa keystore