Ich habe versucht, die JSON in JavaScript zu verschlüsseln, wie unten gezeigt, und es ist verschlüsselt. In unten "obj" ist meine JSON-Daten und ich weiß nicht, warum "ency_key", ich folgte dies von einigen wo in Google und sie String so weitergegeben.javax.crypto.BadPaddingException: Gegeben letzter Block nicht ordnungsgemäß gepolstert Ausnahme
var obj1 = CryptoJS.AES.encrypt(obj,'ency_key').toString();
$.ajax({
url: "web/enyDcyData",
"type": "POST",
async:true,
data:{
json:obj1,
}
aber ich bin nicht in der Lage, die Daten in Java zu entschlüsseln, versuchte ich wie unten in Java. bekomme ich javax.crypto.BadPaddingException: Gegeben letzten Block nicht richtig aufgefüllt Ausnahme bei "doFinal (base64Decode (ency_data));" wo ich Fehler gemacht habe, bitte helfen Sie mir, dieses Problem zu lösen.
public static String decrypt(String ency_data)
SecretKeyFactory keyFac = SecretKeyFactory.getInstance(one);
SecretKey seckey = keyFac.generateSecret(new PBEKeySpec(two));
Cipher cipher = Cipher.getInstance(one);
pbeCipher.init(Cipher.DECRYPT_MODE, seckey , new PBEParameterSpec(SALT, 20));
byte[] res = cipher.doFinal(base64Decode(ency_data));
String decryptedValue = new String(res,"UTF-8");
}
private static byte[] base64Decode(String ency_data) throws IOException {
return new BASE64Decoder().decodeBuffer(ency_data);
}
_ "Ich habe verschiedene Möglichkeiten in Java versucht, bekomme aber einen anderen Fehler" _ Dann zeige sie (mindestens eine davon) – Andreas
Aus deinen Kommentaren klingt es, als wüsstest du nicht, welcher Schlüssel auf der JavaScript-Seite verwendet wird Sie können also nicht einmal prüfen, ob Sie auf der Java-Seite denselben Schlüssel von 'keyFac.generateSecret()' bekommen. Ich denke, die Grundvoraussetzung dafür, eine Krypto-Frage zu SO zu stellen, wäre zu überprüfen, dass der Schlüssel, den Sie für die Verschlüsselung auf der JavaScript-Seite verwenden, derselbe Schlüssel ist, den Sie auf der Java-Seite zum Entschlüsseln verwenden. Ihre Ausgabe ist konsistent mit der Verwendung anderer Schlüssel (sowie vieler anderer Fehler) ... wenn Sie das nicht ausschließen können, können wir Ihnen nicht wirklich helfen. Wählt 'man' sogar AES? – lockcmpxchg8b