原创转载请注明出处: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提交

3424

被折叠的 条评论
为什么被折叠?



