我想在JSP加密和jQuery的解密,我做了下面的代码在JSP加密在jQuery的JSP和解密采用AES
String myKey = "dfslkskfs";
MessageDigest sha = null;
key = myKey.getBytes("UTF-8");
sha = MessageDigest.getInstance("SHA-1");
key = sha.digest(key);
key = Arrays.copyOf(key, 16); // use only first 128 bit
secretKey = new SecretKeySpec(key, "AES");
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
byte[] bytesEncoded = Base64.encodeBase64(cipher.doFinal(json
.getBytes("UTF-8")));
jsontext = new String(bytesEncoded);
HTML标签: -
/>
/>
jQuery代码
我用空两个js文件进行解密 aes.js,模式-ECB-min.js
jsonString = $("#jsonid").val();
secretKey = $("#secretKey").val();
jsonString = escapeStr(jsonString);
var key = CryptoJS.enc.Base64.parse(secretKey);
var decryptedData = CryptoJS.AES.decrypt(jsonString, key, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
var decryptedText = decryptedData.toString(CryptoJS.enc.Utf8);
alert(decryptedText);
如果我运行上面的代码,我得到异常“未捕获的错误:畸形的UTF-8数据”,所以请告诉我我错了什么地方,或者你可以告诉我任何其他的方式。
+0
请花时间正确格式化您的代码。 –
+0
'escapeStr'还将Base64解码为CryptoJS的本机格式吗? –
+0
这看起来像是混淆。如果你通过SSL/TLS服务你的页面,那么你不需要加密,如果你不这样做,那么明文可以被恢复,因为你正在发送密钥。此外,由于ECB在语义上不安全,ECB是一个坏主意。您应该使用像GCM一样的身份验证模式,或者使用具有HMAC的CBC。 –