前端异或加密算法

描述

异或加密即对当前字符串每位与约定的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;
};
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 前端加密的意义 这是一个绕不开的话题,肯定有很多看法.但我看来:前端加密看起来有意义,但有时候看起来并没有意义. ...
    CodeMT阅读 15,942评论 0 10
  • /**ios常见的几种加密方法: 普通的加密方法是讲密码进行加密后保存到用户偏好设置( [NSUserDefaul...
    彬至睢阳阅读 8,213评论 0 7
  • 这篇文章主要讲述在Mobile BI(移动商务智能)开发过程中,在网络通信、数据存储、登录验证这几个方面涉及的加密...
    雨_树阅读 7,959评论 0 6
  • 概述 之前一直对加密相关的算法知之甚少,只知道类似DES、RSA等加密算法能对数据传输进行加密,且各种加密算法各有...
    Henryzhu阅读 8,257评论 0 14
  • 一、什么是对称加密技术? 对称加密采用了对称密码编码技术,它的特点是文件加密和解密使用相同的密钥。信息接收双方都需...
    Djbfifjd阅读 6,632评论 2 8

友情链接更多精彩内容