【发布时间】:2019-04-22 14:12:05
【问题描述】:
我需要在 Javascript 中加密并在 Java 中解密,但是当我在 Java 中加密时,文本是不同的,我使用了不同的脚本但相同的算法,AES-128 CBC 零填充。
这适用于 Intellij IDEA 中的 Javascript 和 Java 7
Javascript:
var message = "3258";
var key = "CLAVE00000000000";
var iv = "VECTOR0000000000";
var ciphertext = CryptoJS.AES.encrypt(message, key, {iv: iv, padding: CryptoJS.pad.ZeroPadding, mode: CryptoJS.mode.CBC});
alert(ciphertext.toString());
var decrypt = CryptoJS.AES.decrypt(ciphertext, key, {iv: iv, padding: CryptoJS.pad.ZeroPadding, mode: CryptoJS.mode.CBC});
alert(CryptoJS.enc.Utf8.stringify(decrypt).toString());
Java:
KeyGenerator keyGenerator = KeyGenerator.getInstance(ALGORITHM);
keyGenerator.init(AES_128);
String key = "CLAVE00000000000";
String IV = "VECTOR0000000000";
System.out.println("1. Message to Encrypt: " + new String(message, StandardCharsets.UTF_8));
byte[] cipherText = encrypt(key, IV, message);
System.out.println("2. Encrypted Text: " + Base64.getEncoder().encodeToString(cipherText));
byte[] decryptedString = decrypt(key, IV, cipherText);
System.out.println("3. Decrypted Message : " + new String(decryptedString));
我希望 Javascript 或 Java 中的密文相同,但值不同
【问题讨论】:
-
你在 Java 中获得了什么价值?
-
在 Javascript 中是:U2FsdGVkX1/3H3/VO8b5gjCk3XZfXkSK9JpgmPGYjtk=
-
在 Java 中是:sEAtASy0J3+Ya3g+Afcj3Q==
-
消息是:3258
-
相同算法 = 相同输入的相同结果。请显示您的更多Java代码,它缺少必须相关的方法。
标签: javascript java