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提交