首页 > 编程语言 >记一次JavaScript异或算法加密 , 异或加密

记一次JavaScript异或算法加密 , 异或加密

时间:2023-08-04 18:00:23浏览次数:38  
标签:const str JavaScript xorEncrypt 异或 result key 加密

 

公司业务代码

const Base64 = require('base-64')
function xorEncrypt (str, key) {
  let result
  const list = []
  for (let i = 0; i < str.length; i++) {
    const charCode = str.charCodeAt(i) ^ key.charCodeAt(i % key.length)
    list.push(String.fromCharCode(charCode))
  }

  result = list.join('')
  return encodeURIComponent(Base64.encode(result))
}
const encryptedText = xorEncrypt(info, API_KEY)
console.log('加密后:', encryptedText)

加密算法

function xorEncrypt(str, key) {
  const result = [];
  for (let i = 0; i < str.length; i++) {
    const charCode = str.charCodeAt(i) ^ key.charCodeAt(i % key.length);
    result.push(String.fromCharCode(charCode));
  }
  return result.join('');
}

const plaintext = "Hello, world!";
const encryptionKey = "secret";

// 加密
const encryptedText = xorEncrypt(plaintext, encryptionKey);
console.log("加密后:", encryptedText);

// 解密 const decryptedText = xorEncrypt(encryptedText, API_KEY) console.log('解密后:', decryptedText)
 

 

标签:const,str,JavaScript,xorEncrypt,异或,result,key,加密
From: https://www.cnblogs.com/qt-fei/p/17606664.html

相关文章

  • 第三方应用使用SDK调系统接口的签名加密解密实现方案
    具体逻辑参考《java/springboot服务第三方接口安全签名(Signature)实现方案》,这边只是做了更细化的代码实现,另外也没有完全贴出所有代码。封装SDK的pom文件<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="ht......
  • [Javascript] event target and currentTarget
    <Parent><child><button/></child></Parent>functiononClick(event){console.log('target:',event.target)//buttonconsole.log('currentTarget',event.currentTarget)//parent}pa......
  • 使用 JavaScript 实现待办事项列表
    让我们通过每个步骤的代码块来完成实现基本待办事项列表的步骤:1.设置HTML结构:2.设置待办事项列表的样式(可选):3.处理任务添加:4.显示任务:步骤3中的代码已涵盖此步骤。5.处理任务完成情况:6.处理任务删除:7.将任务存储在本地存储中(可选):8.重构和改进(可选):重构您的代码,使其更有......
  • JavaScript之变量
    一:变量的概述简单来说,变量就是一个装东西的盒子。二:变量在内存中的存储本质:变量是程序在内存中申请的一块用来存放数据的空间。类似我们酒店的房间,一个房间就可以看做是一个变量。三:变量的使用变量在使用时分为两步:1.声明变量2.赋值1.声明//声明变量varage;//声明一个名称为a......
  • 正则表达式在JavaScript的使用
    正则表达式引入:邮件格式的匹配介绍检查字符串是否符合某些规则使用规则基本语法:构造函数方式:let变量=newRegExp("正则表达式","匹配模式")(更灵活)字面量方式:let变量=/正则表达式/匹配模式(更方便)匹配模式(可以有多个,且顺序无所谓):i忽略大小写g全......
  • JavaScript基础04
    函数函数定义function自定义函数名(){ 函数体代码;}//函数名命名:1.与变量名规则基本上是一样的!2.建议变量名使用名词,函数名用动词3.大小写敏感4.普通函数使用小驼峰,不要首字母大写5.首字母大写的函数一般用作自定义构造函数函数调用自定义函数名();匿名......
  • 前端性能优化的利器 ——— 浅谈JavaScript中的防抖和节流
    防抖和节流函数是工作中两种常用的前端性能优化函数,今天我就来总结一下什么是防抖和节流,并详细说明一下如何在工作中应用防抖和节流函数什么是防抖和节流?在JavaScript中,防抖(debounce)和节流(throttle)是用来限制函数执行频率的两种常见技术。防抖(debounce)是指在某个时间段内......
  • Javascript 方法有多个参数有默认值,但是只想为其中某个参数赋值
    例子:functionlog(a,b=2,c=3,d=4){console.log(a,b,c,d)}log(1);//output:1234log(1,3,6,9);//1369log(1,undefined,9,12);//12912log(1,undefined,0);//1204log(1,undefined,undefined,16);//12316就是在你想......
  • android调用javascript传多个参数
    Stringparam1="Hello";Stringparam2="World";Stringscript="yourJavaScriptFunction('"+param1+"','"+param2+"');";webView.loadUrl("javascript:"+"yourJava......
  • JavaScript ES5模块导入ES6区别
    JavaScriptES5模块导入ES6区别   ES6引入了原生的模块系统,使用import和export关键字来导入和导出模块。ES6模块系统相比ES5的导入方法具有以下几个区别: 1.语法不同:-ES5:使用Require.js或CommonJS,通过`require`方法导入模块。-ES6:使用import关键字导入模块。 2......