标签:
调试了一天终于把java后台与javascript之间的AES加密解密成功了,记录一下过程。
后台java解密代码:解码算法及模式为
AES/CBC/PKCS5Padding
key与iv要为16位
得到16的字符数组按照16进制编码转化为字符串
public static String encrypt(String content, String key) throws Exception { try { Key keySpec = new SecretKeySpec(key.getBytes(), "AES"); //两个参数,第一个为私钥字节数组, 第二个为加密方式 AES或者DES String iv = "1234567890123456";//初始化向量参数,AES 为16bytes. DES 为8bytes. IvParameterSpec ivSpec = new IvParameterSpec(iv.getBytes()); Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); cipher.init(Cipher.ENCRYPT_MODE, keySpec,ivSpec); //Cipher cipher = AesUtil.generateCipher(Cipher.ENCRYPT_MODE,"1234567890123456".getBytes(),"1234567890123456".getBytes()); byte[] byteResult = cipher.doFinal(content.getBytes()); StringBuffer sb = new StringBuffer(); for (int i = 0; i < byteResult.length; i++) { String hex = Integer.toHexString(byteResult[i] & 0xFF); if (hex.length() == 1) { hex = ‘0‘ + hex; } sb.append(hex.toUpperCase()); } return sb.toString(); } catch (Exception e) { e.printStackTrace(); } return null; }
前端JAVASCRIPT代码如下:
37999D4237A3D2701EB368EC53097EC963B5E128D13C8360051ECE37AF7D3A649626AA1D828B9B61813A7557C2C464CDFD913D84C8E507804B51B5904323C8BF为java后台生成的密文
需要先转为16进制字节数组,再转化为BASE64编码才能被
CryptoJS.AES.decrypt方法使用。
key与iv也要经过CryptoJS.enc.Utf8.parse方法转化才能使用。
得到的decrypted1是一个对象,需要进行解析才能使用。
依赖的js文件是CryptoJS v3.1.2:<script type="text/javascript" src="js/aes.js"></script>
var encryptedHexStr = CryptoJS.enc.Hex.parse("37999D4237A3D2701EB368EC53097EC963B5E128D13C8360051ECE37AF7D3A649626AA1D828B9B61813A7557C2C464CDFD913D84C8E507804B51B5904323C8BF"); // 将密文转为Base64的字符串 // 只有Base64类型的字符串密文才能对其进行解密 var encryptedBase64Str = CryptoJS.enc.Base64.stringify(encryptedHexStr); //alert("encryptedBase64Str"); var decrypted1 = CryptoJS.AES.decrypt(encryptedBase64Str, CryptoJS.enc.Utf8.parse("1234567890123456"), { iv: CryptoJS.enc.Utf8.parse("1234567890123456"), mode:CryptoJS.mode.CBC, padding:CryptoJS.pad.Pkcs7 }); alert(CryptoJS.enc.Utf8.stringify(decrypted1).toString()); var txt = (CryptoJS.enc.Utf8.stringify(decrypted).toString());
JAVA后台与前端JAVASCRIPT之间AES加密解密互通
标签:
原文地址:http://www.cnblogs.com/mafei6827/p/5674359.html