JS DES加密

原创转载请注明出处:http://agilestyle.iteye.com/blog/2382089

有一个这样的业务场景,两个不同的平台进行数据交互,一级域名提供网页消息数据,二级域名提供用户相关数据,因为涉及平台交互,所以防止JS跨域劫持,需要对前端的用户相关信息进行加密传输处理。

这里采用 crypto-js 进行DES加密,具体思路:前端进行用户相关信息DES加密处理后,传输给后端进行DES解密,其中对称加密的 key 需要定时刷新(比如采用Spring定时器存入Redis),所以每次提交form的时候,需要首先从Redis中取出最新的 key(可以提供一个取 key 的接口),取出 key 之后再对数据进行加密传输,传输到后台再进行进一步处理。

引入js

<script src="/js/crypto-js.js"></script>
<script src="/js/tripledes.js"></script>
<script src="/js/mode-ecb.js"></script>

编写加密函数

function encryptByDES(message, key) {
	var keyHex = CryptoJS.enc.Utf8.parse(key);
	var encrypted = CryptoJS.DES.encrypt(message, keyHex, {
		mode: CryptoJS.mode.ECB,
		padding: CryptoJS.pad.Pkcs7
	});
	return encrypted.toString();
}

编写获取key函数

function getDesKey() {
	var ajax = $.ajax({
		type: "POST",
		url: "/getDesKey",
		dataType: "json"
	});

	ajax.done(function(data) {
		desKey = data.key;
	});

	return ajax;
}

Ajax提交


 

Reference

https://github.com/brix/crypto-js

猜你喜欢

转载自agilestyle.iteye.com/blog/2382089