Как сделать шифрование RSA массива байтов с основой 64 закодированных открытых ключа?
После чтения этих нескольких статей (поиска Google) на то, как сделать шифрование RSA в Java, нашло следующий отрывок
public byte[] rsaEncrypt(byte[] data) {
PublicKey pubKey = readKeyFromFile("/public.key");
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, pubKey);
byte[] cipherData = cipher.doFinal(src);
return cipherData;
}
У меня есть открытый ключ как base64 закодированная строка (126 символов), Как я создаю 'Открытый ключ' с закодированной строкой и использую его с Шифром.
Ваша строка base64, возможно, является X509EncodedKeySpec. Я могу только догадываться. Если это так, вам следует декодировать строку base64, чтобы получить байт []
. Затем создайте X509EncodedKeySpec
из этого байта []
. Затем создайте экземпляр RSA KeyFactory
и используйте метод generatePublic ()
этого KeyFactory, чтобы получить PublicKey
. Затем этот открытый ключ можно передать в Cipher.init ()
.
Примечание: для выполнения декодирования base64 используйте либо кодек apache commons , либо более сложный декодер base64 .
ОБНОВЛЕНИЕ от 8 марта 2017 г .:
В новостях лучше-поздно, чем никогда, Java 8 теперь включает класс кодирования / декодирования Base64, java.util.Base64