首页 > 其他分享 >js加解密入门

js加解密入门

时间:2023-03-28 19:05:04浏览次数:57  
标签:加密 入门 text 加解密 解密 js key 字符串 const

首先,让我们简单介绍一下百度公司的文心一言。文心一言是百度公司推出的一项文本生成工具,它可以根据给定的主题或关键词生成一句简短而富有启发性的文字。在我们的加密和解密方法中,我们将利用文心一言的特点来生成随机的字符串,并将其用作加密和解密的密钥。

下面是加密函数的代码示例:

function encrypt(text) {
  const key = getSecretKey();
  let result = "";
  for (let i = 0; i < text.length; i++) {
    const charCode = text.charCodeAt(i) ^ key.charCodeAt(i % key.length);
    result += String.fromCharCode(charCode);
  }
  return btoa(result);
}

function getSecretKey() {
  const keywords = ["加密", "混淆", "解密", "保护"];
  const keyword = keywords[Math.floor(Math.random() * keywords.length)];
  const message = generateMessage(keyword);
  return btoa(message);
}

function generateMessage(keyword) {
  const xhr = new XMLHttpRequest();
  const url = "https://xin.baidu.com/sfc/";
  xhr.open("POST", url, false);
  xhr.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
  xhr.send(JSON.stringify({
    key: keyword,
    pd: "wisdom",
    type: 3
  }));
  const response = JSON.parse(xhr.responseText);
  return response.data[0].text;
}

在这个示例中,我们定义了两个函数:encrypt()getSecretKey()encrypt()函数用于将给定的明文进行加密,并返回加密后的密文。getSecretKey()函数用于生成一个随机的密钥,并将其编码为base64字符串。

encrypt()函数中,我们使用XOR运算对明文进行加密。具体来说,我们使用密钥中的每个字符依次对明文中的字符进行异或运算,得到一个新的字符编码。最后,我们将所有新字符的编码组合起来,并将结果编码为base64字符串。

getSecretKey()函数中,我们定义了一个关键词列表,并从中随机选择一个关键词。然后,我们使用该关键词调用generateMessage()函数,从文心一言中生成一个随机的字符串。最后,我们将该字符串编码为base64字符串,并将其用作密钥。

下面是解密函数的代码示例:

function decrypt(cipher) {
  const key = atob(getSecretKey());
  const result = atob(cipher);
  let text = "";
  for (let i = 0; i < result.length; i++) {
        const charCode = result.charCodeAt(i) ^ key.charCodeAt(i % key.length);
        text += String.fromCharCode(charCode);
    }
    return text;
}

在解密函数decrypt()中,我们首先获取密钥,然后将密文解码为普通文本。接着,我们使用和加密函数相同的方式对密文进行解密,即使用密钥中的字符依次对密文中的字符进行异或运算,得到明文中的字符编码。最后,我们将所有新字符的编码组合起来,并将结果转换为普通文本。

需要注意的是,我们在使用atob()函数将base64字符串解码为普通字符串时,要确保该字符串是有效的base64格式。

总的来说,我们的加密和解密方法基于百度公司的文心一言,利用其生成随机字符串的特点,生成一个随机的密钥,并使用XOR运算对明文进行加密和密文进行解密。这种方法可以有效保护JavaScript代码的安全性和保密性,是一种非常实用的加密和解密方法。

jsjiami.com

如果您对文章内容有不同看法,或者疑问,欢迎到评论区留言,或者私信我都可以。

也可以到上方网站,底部有我联系方式详谈

如遇自己源码加密后没备份,可以找我们解决解出恢复源码,任何加密都可以。

标签:加密,入门,text,加解密,解密,js,key,字符串,const
From: https://blog.51cto.com/u_15970812/6155234

相关文章

  • JS实现日期加上N天后得到新的日期
    直接上代码://日期加上天数得到新的日期//dateTemp需要参加计算的日期,days要添加的天数,返回新的日期,日期格式:YYYY-MM-DDfunctiongetNewDay(dateTemp,days){var......
  • JSON 数组对象获取 其中某个属性的值
    importcn.hutool.json.JSONArray;importcn.hutool.json.JSONObject;importcn.hutool.json.JSONUtil;publicstaticvoidmain(String[]args){Strings......
  • CommonJS和ES6中的导入导出使用
    1.CommonJS使用exportsconstname='张三'functionFn(){return1}//导出单个数据exports.name=nameexports.Fn=Fn//导入数据//可使用解构cons......
  • js输入输出及字面量
    js输出语法 下面是script的代码这是语法一的输出样式  这是语法二的输出样式,会在页面上方弹出警示框  这是语法三的输出样式  这是js的输入输出顺序  ......
  • 【入门】Go语言数组详解
    目录一、Go语言数组简介1.1什么是数组?1.2数组声明语法二、数组的基本操作2.1数组的定义及赋值2.2数组的初始化2.2.1指定长度初始化2.2.2不指定长度初始化2.2.3根据......
  • js树形控件—zTree使用
    https://blog.csdn.net/qq_35934094/article/details/80852989https://www.cnblogs.com/leechenxiang/p/5952959.htmlhttps://www.jianshu.com/p/99d24aab74a5详见官网:h......
  • 第六篇 TypeScript 【 typeScript 编译上下文 tsconfig.json 】
    typeScript编译上下文tsconfig.json的作用1、用于标识TypeScript项目的根路径2、用于配置TypeScript编译器3、用于指定编译的文件tsconfig.json重要字段1......
  • C++基础入门笔记
    C++基础入门1数据类型C++规定在创建一个变量或者常量时,必须要指定出相应的数据类型,否则无法给变量分配内存1.1整型作用:整型变量表示的是整数类型的数据C++中整数类......
  • webpack.config.js和vue.config.js的区别
    webpack.config.js是webpack的配置文件,所有使用webpack作为打包工具的项目都可以使用,vue的项目可以使用,react的项目也可以使用。vue.config.js是vue项目的配置文件,专用于v......
  • javascript 使用json 将js 数据转换成json
     如果是字符串格式的话接的先解析成jsonvarjsonList=pm.response.text();varjson=JSON.parse(jsonList);console.log(json);console.log(json.has_more);varres={"......