前端異或加密算法

描述

異或加密即對當前字符串每位與約定的key的每位進行異或操作,求出結(jié)果,以下代碼中最后為了方便傳輸,對加密后的密文做了一個base64轉(zhuǎn)碼,如果不需要,可以直接返回message。

import {
  Base64
} from 'js-base64';

/**
 * @description 字符串異或加密,并做base64轉(zhuǎn)碼
 * 異或加密即對當前字符串每位與當前約定的key的每位進行異或操作,求出結(jié)果
 * charCodeAt: 返回當前字符的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;
};
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前端加密的意義 這是一個繞不開的話題,肯定有很多看法.但我看來:前端加密看起來有意義,但有時候看起來并沒有意義. ...
    CodeMT閱讀 16,048評論 0 10
  • 這篇文章主要講述在Mobile BI(移動商務(wù)智能)開發(fā)過程中,在網(wǎng)絡(luò)通信、數(shù)據(jù)存儲、登錄驗證這幾個方面涉及的加密...
    雨_樹閱讀 3,018評論 0 6
  • 概述 之前一直對加密相關(guān)的算法知之甚少,只知道類似DES、RSA等加密算法能對數(shù)據(jù)傳輸進行加密,且各種加密算法各有...
    Henryzhu閱讀 3,208評論 0 14
  • 一、什么是對稱加密技術(shù)? 對稱加密采用了對稱密碼編碼技術(shù),它的特點是文件加密和解密使用相同的密鑰。信息接收雙方都需...
    Djbfifjd閱讀 2,334評論 2 8
  • 人類作為世界生物一族,其在漫長的進化過程中,整體的進化進程是同步的,不會有大的差距。人類的先天思維基礎(chǔ)也基本無大異...
    快樂大拙閱讀 306評論 0 3

友情鏈接更多精彩內(nèi)容