Я пытаюсь использовать шифрование RSA с KeyStore, и мне нужно указать параметры для KeyPairGenerator
, и я здесь потерян. KeyPairGeneratorPair
довольно просто, но я не понимаю KeyGenParameterSpec
для API> = 23
Это то, что я сделал, я думаю, что все понял в else
части, но теперь я запутался в KeyGenParameterSpec
Что такое публичный показатель в RSAKeyGenParameterSpec
?
Какие дайджесты в .setDigests
я должен указать?
Также есть метод .setBlockMode()
для вызова, и, поскольку я использую RSA и RSA/None/OAEPWithSHA1AndMGF1Padding
, какой режим блока установить? ЕЦБ, CBC?
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");