/** * =============================================== * created by zhihua·wei. * author: zhihua·wei * date: 2018/2/27 * time: 10:20 * project: 基于php和js的aes相互加密解密方法详解(cryptojs) * power: javascript common function * =============================================== */ /** * 接口数据加密函数 * @param str string 需加密的json字符串 * @param key string 加密key(16位) * @param iv string 加密向量(16位) * @return string 加密密文字符串 */ function encrypt(str, key, iv) { //密钥16位 var key = cryptojs.enc.utf8.parse(key); //加密向量16位 var iv = cryptojs.enc.utf8.parse(iv); var encrypted = cryptojs.aes.encrypt(str, key, { iv: iv, mode: cryptojs.mode.cbc, padding: cryptojs.pad.zeropadding }); return encrypted; } /** * 接口数据解密函数 * @param str string 已加密密文 * @param key string 加密key(16位) * @param iv string 加密向量(16位) * @returns {*|string} 解密之后的json字符串 */ function decrypt(str, key, iv) { //密钥16位 var key = cryptojs.enc.utf8.parse(key); //加密向量16位 var iv = cryptojs.enc.utf8.parse(iv); var decrypted = cryptojs.aes.decrypt(str, key, { iv: iv, mode: cryptojs.mode.cbc, padding: cryptojs.pad.zeropadding }); return decrypted.tostring(cryptojs.enc.utf8); } function js_encrypt(text){ var key = cryptojs.enc.latin1.parse('1e390cmd585lls4s'); //为了避免补位,直接用16位的秘钥 var iv = cryptojs.enc.latin1.parse('1104432290129056'); //16位初始向量(请记住这两个都要保证是16位) var encrypted = cryptojs.aes.encrypt(text, key, { iv: iv, mode:cryptojs.mode.cbc, padding:cryptojs.pad.zeropadding }); return encrypted; }