js javascript 简易随机值穿插加解密【原】

适用场景

本方法适用于需要对敏感信息进行加密传输,但加解密要求又不高的场景,因为是前台的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 >test</div>

</body>

</html>

结果

加密前的值为abc

加密后的值为a3b2c9