描述
異或加密即對當(dāng)前字符串每位與約定的key的每位進行異或操作摘符,求出結(jié)果贤斜,以下代碼中最后為了方便傳輸,對加密后的密文做了一個base64轉(zhuǎn)碼逛裤,如果不需要瘩绒,可以直接返回message。
import {
Base64
} from 'js-base64';
/**
* @description 字符串異或加密带族,并做base64轉(zhuǎn)碼
* 異或加密即對當(dāng)前字符串每位與當(dāng)前約定的key的每位進行異或操作锁荔,求出結(jié)果
* charCodeAt: 返回當(dāng)前字符的Unicode 編碼
* 異或:兩個值相同返回1,兩個值不同蝙砌,返回0
* @param {String} val 需要加密的文字
* @param { Boolean } isBase64 是否經(jīng)過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 是否經(jīng)過了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;
};