Ich versuche, eine Nachricht zu verschlüsseln und zu entschlüsseln, wie im folgenden Code beschrieben. Grundsätzlich möchte ich eine Nachricht mit einem öffentlichen Schlüssel verschlüsseln und die verschlüsselte Nachricht von einem Byte-Array in einen String konvertieren. Und diesen String in den ursprünglichen Text entschlüsseln. Hier sind die beiden Methoden. Hier funktioniert die Verschlüsselung gut, aber die Entschlüsselung schlägt fehl (Fehler ist "Daten müssen mit Null beginnen"). Ich denke, dies ist die Ursache, weil ich verschlüsselte Byte-Array in String konvertieren.
Wie kann ich das lösen? (Ich möchte ein verschlüsseltes Byte-Array als String haben und es für die Entschlüsselung verwenden) Gibt es einen anderen Ansatz (mit öffentlichen und privaten Schlüsseln)
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) {
}