以下のコードに記載されているように、メッセージを暗号化および復号化しようとしています。基本的に、公開鍵でメッセージを暗号化し、その暗号化されたメッセージをバイト配列から文字列に変換したいと思います。そして、この文字列を元のテキストに復号化します。これが両方の方法です。ここでは暗号化は正常に機能しますが、復号化は失敗します(エラーは「データはゼロで始まる必要があります」です)。暗号化されたバイト配列を文字列に変換するため、これが原因だと思います。
どうすればこれを解決できますか?(暗号化されたバイト配列を文字列として使用し、復号化に使用したい)他のアプローチはありますか(公開鍵と秘密鍵を使用)
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) {
}