Я пытаюсь зашифровать и расшифровать сообщение, как указано в приведенном ниже коде. По сути, я хочу зашифровать сообщение с помощью открытого ключа и преобразовать это зашифрованное сообщение из байтового массива в строку. И расшифровать эту строку в исходный текст. Вот оба метода. Здесь шифрование работает нормально, но дешифрование не удается (ошибка «Данные должны начинаться с нуля»). Я думаю, что это является причиной, потому что я преобразовываю зашифрованный байтовый массив в строку.
Как мне это решить? (Я хочу зашифровать массив байтов в виде строки и использовать его для расшифровки) Есть ли другой подход (с открытым и закрытым ключами)
public static String getEncryptedMessage(String publicKeyFilePath,
String plainMessage) {
byte[] encryptedBytes;
try {
Cipher cipher = Cipher.getInstance("RSA");
byte[] publicKeyContentsAsByteArray = getBytesFromFile(publicKeyFilePath);
PublicKey publicKey = getPublicKey(publicKeyContentsAsByteArray);
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
encryptedBytes = cipher.doFinal(plainMessage.getBytes());
return new String(encryptedBytes);
} catch (Throwable t) {
}
}
public static String getDecryptedMessage(
String privateKeyFilePath, String encryptedMessage)
{
byte[] decryptedMessage;
try {
Cipher cipher = Cipher.getInstance("RSA");
byte[] privateKeyContentsAsByteArray = getBytesFromFile(privateKeyFilePath);
PrivateKey privateKey = getPrivateKey(privateKeyContentsAsByteArray);
cipher.init(Cipher.DECRYPT_MODE, privateKey);
decryptedMessage = cipher.doFinal(encryptedMessage.getBytes());
return new String(decryptedMessage);
} catch (Throwable t) {
}