So verschlüsseln Sie eine Nachricht auf der Clientseite mithilfe der crypto-js-Bibliothek und entschlüsseln Sie sie auf dem Java-Server

Hintergrund Die Anwendung, an der ich arbeite, soll offline funktionieren. Ich habe eine HTML5-Seite und die vom Benutzer eingegebenen Daten werden mit der crypto-js-Bibliothek verschlüsselt. Und ich möchte, dass die verschlüsselte Nachricht an den Java-Webserver gesendet und dann auf der Serverseite entschlüsselt wird.

Was mache ich Ich kann die Nachricht mit Crypto-js verschlüsseln

<code>
var message = "my message text";
var password = "user password";
var encrypted = CryptoJS.AES.encrypt( message ,password );
console.log(encrypted.toString());
// this prints an encrypted text "D0GBMGzxKXU757RKI8hDuQ=="
</code>

Was ich tun möchte, ist den verschlüsselten Text "D0GBMGzxKXU757RKI8hDuQ ==" an einen Java-Server-Side-Code zu übergeben und die entschlüsselte Nachricht zu erhalten.

Ich habe viele Optionen ausprobiert, um die mit crypto-js verschlüsselte Nachricht auf der Java-Serverseite zu entschlüsseln. Unten finden Sie meinen Code auf der Serverseite, der die Entschlüsselung des verschlüsselten Texts durchführen soll.

<code>
public static String decrypt(String keyText,String encryptedText) 
{
// generate key 
Key key = new SecretKeySpec(keyText.getBytes(), "AES");
Cipher chiper = Cipher.getInstance("AES");
chiper.init(Cipher.DECRYPT_MODE, key);
byte[] decordedValue = new BASE64Decoder().decodeBuffer(encryptedText);
byte[] decValue = chiper.doFinal(decordedValue);
String decryptedValue = new String(decValue);
return decryptedValue;
}  
</code>

Ich rufe die Java-Methode auf, die von unten entschlüsselt wurde.

<code>
// performs decryption 
public static void main(String[] args) throws Exception 
{
String decryptedText = CrypterUtil.decrypt("user password","D0GBMGzxKXU757RKI8hDuQ==");
}
</code>

Aber ich bekomme die folgende Ausnahme, wenn ich den Java-Entschlüsselungscode starte

<code>
Exception in thread "main" java.security.InvalidKeyException: Invalid AES key length: 13 bytes
at com.sun.crypto.provider.AESCipher.engineGetKeySize(AESCipher.java:372)
at javax.crypto.Cipher.passCryptoPermCheck(Cipher.java:1052)
at javax.crypto.Cipher.checkCryptoPerm(Cipher.java:1010)
at javax.crypto.Cipher.implInit(Cipher.java:786)
at javax.crypto.Cipher.chooseProvider(Cipher.java:849)
at javax.crypto.Cipher.init(Cipher.java:1213)
at javax.crypto.Cipher.init(Cipher.java:1153)
at au.gov.daff.pems.model.utils.CrypterUtil.decrypt(CrypterUtil.java:34)
at au.gov.daff.pems.model.utils.CrypterUtil.main(CrypterUtil.java:47)
Process exited with exit code 1.
</code>

Nicht sicher, was ich falsch mache? ... Wie kann ich eine Nachricht mit der crypto-js-Bibliothek am besten verschlüsseln, damit sie an anderer Stelle mit einem vom Benutzer eingegebenen Kennwort entschlüsselt werden kann?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage