适用场景
本方法适用于需要对敏感信息进行加密传输,但加解密要求又不高的场景,因为是前台的javascript加解密,所以其实还是能通过js代码分析出原始值来的。
如果您对信息极其敏感, 比例登录密码这种, 建议还使用更安全的后台加密。
流程图
加密规则: 从池中随机添加一个字符到每一实际字符后100%生成偶数位字符串,
加密样例: 从012345789每次取一随机值插到abc字符串的每个字符后,形成a8b6c9
解密样例: 只抽取1,3,5,7,9奇数位,最后只抽出abc
最纯粹的js写法
<html> <body> <script type="text/javascript"> function Code() { //key池 ,该池按需调整,也可以加上英文字母如 'abcdefghijklmnopqrstuvwxyz0123456789',但必须双方约定好. var key = '0123456789'; //取随机数 function sum(m, n) { var num = Math.floor(Math.random() * (m - n) + n); return num; } //取key池的随机数 function getRandomChar() { var index = sum(1, key.length); var result = key.charAt(index); return result; } //加密 this.encode = function (src) { var result = ""; var length = src.length; for (var i = 0; i < length; i++) { result += src.charAt(i) + getRandomChar(); } return result; } //解密 this.decode = function (src) { var result = ""; var length = src.length; for (var j = 0; j < length; j++) { if (j % 2 == 0) { result += src.charAt(j); } } return result; } } //创建加密对象 var code = new Code(); //加密样例 var encodeValue = code.encode("abc"); alert("encodeValue: " + encodeValue); //解密样例 var decodeValue = code.decode(encodeValue); alert("decodeValue: " + decodeValue); </script> <div id="app">test</div> </body> </html>
结果
加密前的值为abc
加密后的值为a3b2c9