crypto-js接口加密方式

47 篇文章 1 订阅
6 篇文章 0 订阅

     在进行项目中的的借口设定的时候,往往都需要对接口采用一定的加密方式。本文中将介绍一下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中的。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值