描述
异或加密即对当前字符串每位与约定的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;
};
网友评论