前端异或加密算法

描述

异或加密即对当前字符串每位与约定的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++) {