RSA шифруют с закодированным открытым ключом base64 в Android

Как сделать шифрование 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 символов), Как я создаю 'Открытый ключ' с закодированной строкой и использую его с Шифром.

10
задан Suresh 2 June 2010 в 10:08
поделиться

1 ответ

Ваша строка base64, возможно, является X509EncodedKeySpec. Я могу только догадываться. Если это так, вам следует декодировать строку base64, чтобы получить байт [] . Затем создайте X509EncodedKeySpec из этого байта [] . Затем создайте экземпляр RSA KeyFactory и используйте метод generatePublic () этого KeyFactory, чтобы получить PublicKey . Затем этот открытый ключ можно передать в Cipher.init () .

Примечание: для выполнения декодирования base64 используйте либо кодек apache commons , либо более сложный декодер base64 .

ОБНОВЛЕНИЕ от 8 марта 2017 г .: В новостях лучше-поздно, чем никогда, Java 8 теперь включает класс кодирования / декодирования Base64, java.util.Base64

8
ответ дан 4 December 2019 в 00:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: