В настоящее время я пытаюсь написать программу, которая будет использовать криптосистему с открытым ключом, такую как RSA или ElGamal. Я смотрел на различные источниках, и ближе я получил был в Bouncy Castle FIPS documentation ключе шифрования с открытым, где образцом кода для RSA является несколько проста:Эффективная реализация генерации и шифрования открытых ключей RSA в Java
public byte[] pkcs1Encrypt(RSAPublicKey pubKey, byte[] data) {
Cipher c = Cipher.getInstance(“RSA/NONE/PKCS1Padding”, “BCFIPS”);
c.init(Cipher.ENCRYPT_MODE, pubKey);
return c.doFinal(data);
}
я работал часто с симметричными ключевыми криптосистемами такими как AES и Triple-DES (DESede), но я посмотрел документацию Bouncy Castle и выяснил, что RSAPublicKey
не является под-интерфейсом/классом класса SecretKey
.
Есть ли способ, чтобы создать этот RSAPublicKey
объект, или есть более эффективный способ реализации такого рода шифрование с замком Bouncy или ОКОМ
Спасибо за ваш ответ! Единственный вопрос, который у меня есть, заключается в использовании объекта 'SecureRandom' для генерации байтового массива' publicickeydata'? – FaceFTW
'publicKeyData []' - это просто существующий открытый ключ, закодированный как двоичный DER 'publicKey.getEncoded()'. Я включил пример кода для генерации новой пары ключей, используя «SecureRandom». Oracle рекомендует использовать произвольный алгоритм _strong при создании дорогостоящих и долгоживущих секретов, таких как общедоступные и приватные ключи RSA. Поскольку JDK8 имеет некоторые реализации. См. Https://docs.oracle.com/javase/tutorial/security/apisign/step2.html. – pedrofb