美文网首页
前端异或加密算法

前端异或加密算法

作者: 养猫的哈士奇_杨柳 | 来源:发表于2020-04-01 09:52 被阅读0次

    描述

    异或加密即对当前字符串每位与约定的key的每位进行异或操作,求出结果,以下代码中最后为了方便传输,对加密后的密文做了一个base64转码,如果不需要,可以直接返回message。

    import {
      Base64
    } from 'js-base64';
    
    /**
     * @description 字符串异或加密,并做base64转码
     * 异或加密即对当前字符串每位与当前约定的key的每位进行异或操作,求出结果
     * charCodeAt: 返回当前字符的Unicode 编码
     * 异或:两个值相同返回1,两个值不同,返回0
     * @param {String} val 需要加密的文字
     * @param { Boolean } isBase64 是否经过base64处理,默认true
     */
    const XORencryption = (val, isBase64 = true) => {
      if (typeof val !== 'string') return val;
      let key = 'k1k2frCETI8bkyLzW25KVZ5ZAjaKrtzbnBlpYCob+IsHBPe/N6g7Vw==';
      let message = '';
      for (var i = 0; i < val.length; i++) {
        message += String.fromCharCode(val.charCodeAt(i) ^ key.charCodeAt(i));
      }
      if (isBase64) return Base64.encode(message);
      return message;
    };
    
    /**
     * @description 解密异或加密的密文
     * @param { String } val  密文
     * @param { Boolean } isBase64 是否经过了base64处理,默认true
     */
    const decodeXOR = (val, isBase64 = true) => {
      if (typeof val !== 'string') return val;
      let XORmsg = isBase64 ? Base64.decode(val) : val;
      let key = 'k1k2frCETI8bkyLzW25KVZ5ZAjaKrtzbnBlpYCob+IsHBPe/N6g7Vw==';
      let message = '';
      for (var i = 0; i < XORmsg.length; i++) {
        message += String.fromCharCode(XORmsg.charCodeAt(i) ^ key.charCodeAt(i));
      }
      return message;
    };
    

    相关文章

      网友评论

          本文标题:前端异或加密算法

          本文链接:https://www.haomeiwen.com/subject/jghouhtx.html