crypto-js接口加密方式

     在进行项目中的的借口设定的时候,往往都需要对接口采用一定的加密方式。本文中将介绍一下crypto-js.js的加密方式。而crypto-js.js就是一个前端加密库,你可以把它当做一个前端插件来引用即可。详细介绍:点击打开链接

      本项目中使用express开发,前后台均使用crypto-js.js来进行加密解密处理。对于才开始的时候,我想使用的是前台的crypto-js来进行数据加密,后台使用nodejs的crypto对应的模块来进行解密。但是在后台(nodejs)的加解密时候,使用了Buffer的矢量,这在前台貌似是实现不出来的,也有可能是我孤陋了,反正我是没有搞出来,在后来我仔细看了下crypto-js的源码,发现在nodejs的后端不需要使用crypto.js 的模块来对应的解析前台传过来的加密内容,可以直接将crypto-js的模块引入到后端的项目中,然后再使用同样的解密方式来解密出来即可。让我恍然大悟的就是crypto-js源码的这一段。

(function (root, factory) {
    if (typeof exports === "object") {
        // CommonJS
        module.exports = exports = factory();
    }
    else if (typeof define === "function" && define.amd) {
        // AMD
        define([], factory);
    }
    else {
        // Global (browser)
        root.CryptoJS = factory();
    }
}

下面给大家演示个demo吧,其实说是demo感觉还是有一定的抄袭成分,哈哈。

前端Js加密:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript" src="js/crypto-js.js" ></script>
	</head>
	<body>
		<script type="text/javascript">
			function getAesString(data, key, iv) { //加密
				var key = CryptoJS.enc.Utf8.parse(key);
				var iv = CryptoJS.enc.Utf8.parse(iv);
				var encrypted = CryptoJS.AES.encrypt(data, key, {
					iv: iv,
					mode: CryptoJS.mode.CBC,
					padding: CryptoJS.pad.Pkcs7
				});
				return encrypted.toString(); //返回的是base64格式的密文
			}

			function getAES(data) { //加密
				var key = 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'; //密钥
				var iv = '1234567812345678';
				var encrypted = getAesString(data, key, iv); //密文
				var encrypted1 = CryptoJS.enc.Utf8.parse(encrypted);
				return encrypted;
			}
			document.write("加密内容:"+getAES("123"));
		</script>
	</body>
</html>

后端nodejs解密:

var CryptoJS = require("./crypto-js");
function getDAesString(encrypted, key, iv) { //解密
	var key = CryptoJS.enc.Utf8.parse(key);
	var iv = CryptoJS.enc.Utf8.parse(iv);
	var decrypted = CryptoJS.AES.decrypt(encrypted, key, {
		iv: iv,
		mode: CryptoJS.mode.CBC,
		padding: CryptoJS.pad.Pkcs7
	});
	return decrypted.toString(CryptoJS.enc.Utf8);
}
function getDAes(data) { //解密
	var key = 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'; //密钥
	var iv = '1234567812345678';
	var decryptedStr = getDAesString(data, key, iv);
	return decryptedStr;
}
console.log(getDAes("44PsEnkgY329oB8GtwQuGA=="));
其实我是为了方便大家对于前后端分离加解密这样做的,上面的后端代码是可以放在前台的html中的。

猜你喜欢

转载自blog.csdn.net/swimming_in_it_/article/details/80799573