当前位置: 首页 > news >正文

js加解密入门

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

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

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

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

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

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

http://www.lryc.cn/news/44526.html

相关文章:

  • vue+Echarts导入自定义地图
  • dp-组合总和 Ⅳ
  • 46-堆
  • Mysql高可用高性能存储应用系列3 - mysqld_multi配置主从集群
  • 天干地支(Java)
  • 码住,虹科工业树莓派应用小tips
  • 美国新规-带绳窗帘亚马逊ANSI/WCMA A100.1-20测试标准详解
  • 【华为OD机试 2023最新 】 模拟商场优惠打折(C++)
  • 前端直接生成GIF动态图实践
  • 2023年Java岗面试八股文及答案整理(金三银四最新版)
  • centos8上安装redis
  • 新六级阅读通关特训
  • 【AI绘画】如何使用Google Colab安装Stable Diffusion
  • C++:STL架构图
  • [Ubuntu][网络][教程]端口转发以及端口管理
  • @Scheduled 定时任务不执行
  • 我是怎样被卷的(二)
  • Linux- 浅谈ELF目标文件格式
  • C++ MVC模式
  • IntelliJ IDEA2021安装教程
  • day16—选择题
  • LLVM 的中间代码(IR) 基本语法
  • 多标签在单行出现省略的实现
  • 第二十七章 纹理总结
  • 【Linux面试】-(腾讯,百度,美团,滴滴)
  • 编译链接和预处理
  • 基于sprinmgboot实现实习管理系统的设计【源码+论文】
  • 动态规划入门
  • day26 SpringBootWeb案例(二)
  • 力扣-《剑指offer》-哈希表-刷题笔记