有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

AES 128加密java中的加密和javascript中的解密

我有一个Java代码,其中的加密操作如下:

String encrypted = "mPgzvJKbSFgP6nRRHNlTufscZiChL2KUYaNeSF27+Dg=";
String key = "9d6ea4d3e6f8c4f8";
String salt = "1c5dd32d7ba54bdd"; 
String transform = "AES/CBC/ISO10126PADDING";

IvParameterSpec ivspec = new IvParameterSpec(salt.getBytes());
SecretKey secretKey = new SecretKeySpec(key.getBytes(), "AES");
Cipher cipher = Cipher.getInstance(transform);
cipher.init(Cipher.DECRYPT_MODE, secretKey, ivspec);

byte[] encryptedBytes = DatatypeConverter.parseBase64Binary(encrypted); // hash to byte[] 
byte[] data = cipher.doFinal(encryptedBytes); 
System.out.println(new String(data));

现在,我需要用javascript对其进行解密。我写的代码是:

var key = '9d6ea4d3e6f8c4f8';
var iv  = '1c5dd32d7ba54bdd';

var options = {iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Iso10126};

alert("key + " + key);
alert("iv + " + iv);

var encrypted = 'mPgzvJKbSFgP6nRRHNlTufscZiChL2KUYaNeSF27+Dg=';
alert("encrypted + " + encrypted);
alert("encrypted.toString() = " + encrypted.toString());

var decrypyted = CryptoJS.AES.decrypt(encrypted.toString(), key, options );//error in this line.
alert(decrypyted);
alert(decrypyted.toString(CryptoJS.enc.Utf8));

加密工作正常,当我尝试使用javascript解密加密字符串时,我得到了一个错误。一旦我执行解密函数,JS就会停止工作。知道我做错了什么吗


共 (0) 个答案