Ich konnte eine Nachricht erfolgreich mit einem generierten Schlüssel verschlüsseln. Jetzt versuche ich eine Entschlüsselung zu erreichen, bei der ein Benutzer einen Schlüssel (Hex) und eine verschlüsselte Nachricht (Hex) eingeben würde. Ich habe ein Problem beim Entschlüsseln der verschlüsselten Nachricht (Hex). Ich erhalte mehrere NullPointerExceptions. Könnten Sie mir bitte helfen, eine Lösung für dieses Problem zu finden?NullPointer Exception beim Entschlüsseln von AES
// Edit: Zum Beispiel der Schlüssel (Hex): CFDD0F5311764F9EA56CF4126E304BC2 | Verschlüsselte Nachricht: C2A80A2B7A84A5A785E059F19322E5BA
private void executeDecryption() {
encryptMessageStr = messageEncryptTA.getText();
algorithmType = decryptAlgorithmTypeCB.getSelectionModel().getSelectedItem();
keyDecrypt = keyTF.getText();
if (!messageEncryptedTA.getText().isEmpty()) {
try {
//Using decryptText()
String textDecipher = decryptText(encryptedMessageStr, keyDecrypt);
messageEncryptedTA.setText(textDecipher);
} catch (Exception ex) {
MessageBox.display("Error!", "Could not decrypt message! Please try again later");
//System.out.println(ex.getMessage());
}
} else {
MessageBox.display("Warning!", "Please make sure message field is not empty!");
}
}
public static String decryptText(String encryptedMessageStr, String secretKey) {
try {
Key k = new SecretKeySpec(Base64.getDecoder().decode(secretKey), "AES");
Cipher cipherAES = Cipher.getInstance("AES");
cipherAES.init(Cipher.DECRYPT_MODE, k);
byte[] decodedValue = Base64.getDecoder().decode(encryptedMessageStr);
byte[] cipherTextBytes = cipherAES.doFinal(decodedValue);
String decryptedValue = new String(cipherTextBytes);
return decryptedValue;
} catch (Exception ex) {
ex.printStackTrace();
}
return "Error";
}
Edited:
EXCEPTION: javax.crypto.IllegalBlockSizeException: Eingangslänge muss Vielfaches von 16 sein, wenn mit gepolstertem cipher
Hallo, ich habe einige Änderungen an den Null-Zeiger-Ausnahmen hinzugefügt. – Milan
Ihre am meisten korrekt. Das Problem ist die Tatsache, dass ich einen hexadezimalen Wert einnehme, wenn ich einen Klartext angenommen habe. Irgendwelche Ideen, wie ich das Hex in Bytes umwandeln kann? – Milan
Wie konvertiere ich eine Zeichenfolge (Hex) in den Seceret-Schlüssel? – Milan