vue RSA加密解密(解决加密过长,解密过长返回为null的问题)

news/2024/9/23 9:23:55/

1安装

javascript">npm i jsencrypt

2.rsa.js

javascript">/* 产引入jsencrypt实现数据RSA加密 */
import JSEncrypt from 'jsencrypt' // 处理长文本数据时报错 jsencrypt.js Message too long for RSA
/* 产引入encryptlong实现数据RSA加密 */
import Encrypt from 'encryptlong' // encryptlong是基于jsencrypt扩展的长文本分段加解密功能。//公钥key
const encryptKey = "****";
//私钥
const decryptKey = "****"
/* JSEncrypt加密 */
function encryptCode(data) {//console.log('rsa文件中的publicKey', encryptKey)let jsencrypt = new JSEncrypt();//设置公钥 公钥是由后端返回的jsencrypt.setPublicKey(encryptKey);// 如果是对象/数组的话,需要先JSON.stringify转换成字符串let result = jsencrypt.encrypt(JSON.stringify(data));return result
}
// JSEncrypt解密
function decryptCode(password) {let decrypt = new JSEncrypt();//设置私钥  私钥也是从后端拿的decrypt.setPrivateKey(decryptKey);let data = JSON.parse(decrypt.decrypt(password));return data
}/*加密 */
function encrypt(data) {const PUBLIC_KEY = encryptKeyvar encryptor = new Encrypt()encryptor.setPublicKey(PUBLIC_KEY)// 如果是对象/数组的话,需要先JSON.stringify转换成字符串const result = encryptor.encryptLong(data)return result
}
/* 解密 - PRIVATE_KEY - 验证 */
function decrypt(data) {const PRIVATE_KEY = decryptKeyvar encryptor = new Encrypt()encryptor.setPrivateKey(PRIVATE_KEY)// 如果是对象/数组的话,需要先JSON.stringify转换成字符串var result = encryptor.decryptLong(data)return result
}
export {encryptCode,decryptCode,encrypt,decrypt
}

3.在页面使用

javascript"><script setup>
import { ref, getCurrentInstance, rective} from "vue";
import { encryptCode,decryptCode,encrypt,decrypt} from "@/utils/rsa"
const info = ref({
username:"name",
password:"123456"
})
let logins = {username: info.value.username,password: info.value.password,};let login1 = that.$utils.encryptCode(JSON.stringify(logins)); //加密let login = that.$utils.decryptCode(login1); //解密// 如果解密字段过长,返回null,用encryptlong进行解密let login = that.$utils.decrypt(login1); //解密
//接口
</script 

http://www.ppmy.cn/news/1508969.html

相关文章

浅谈Sql Server 视图

一、视图简介 SQL 视图&#xff08;Views&#xff09;是一种虚拟表&#xff0c;是基于 SQL 查询结果生成的。这些虚拟表可以包含来自一个或多个表的数据&#xff0c;并且可以像表一样查询&#xff1b;视图是一个表中的数据经过某种筛选后的显示方式&#xff0c;或者多个表中的数…

Python | Leetcode Python题解之第335题路径交叉

题目&#xff1a; 题解&#xff1a; class Solution:def isSelfCrossing(self, distance: List[int]) -> bool:n len(distance)# 处理第 1 种情况i 0while i < n and (i < 2 or distance[i] > distance[i - 2]):i 1if i n:return False# 处理第 j 次移动的情况…

Docker Swarm管理

Docker概念 Docker Swarm是Docker公司2014年出品的基于Docker的集群管理调度工具。能够将多台主机构建成一个Docker集群&#xff0c;并结合Overlay网络实现容器调度和互访 Docker Swarm使用GO语言开发&#xff0c;从Docker 1.12.0版本开始&#xff0c;Docker Swarm已经内置于D…

无字母数字webshell之命令执行

文章目录 无字母数字的webshell构造技巧php7下简单解决问题php5下解决问题glob开始操作 无字母数字的webshell构造技巧 <?php if(isset($_GET[code])){$code $_GET[code];if(strlen($code)>35){die("Long.");}if(preg_match("/[A-Za-z0-9_$]/",$c…

论文分享|MLLMs中多种模态(图像/视频/音频/语音)的tokenizer梳理

本文旨在对任意模态输入-任意模态输出 (X2X) 的LLM的编解码方式进行简单梳理&#xff0c;同时总结一些代表性工作。 注&#xff1a;图像代表Image&#xff0c;视频代表Video&#xff08;不含声音&#xff09;&#xff0c;音频代表 Audio/Music&#xff0c;语音代表Speech 各种…

unity--webgl 访问本地index.html

目录 1:使用本地服务器 1.1 使用 Python 的 SimpleHTTPServer 1.2 使用 Node.js 的 http-server 2&#xff1a;让其他人通过 IP 地址来访问你的 Unity WebGL 项目 2.1: 确保服务器可访问 2.2 获取公共 IP 地址 2.3 配置本地服务器 1.使用 Python 的 SimpleHTTPServer 2…

数据库原理面试-核心概念-问题理解

目录 1.数据库、数据库系统与数据库管理系统 2.理解数据独立性 3.数据模型 4.模式、外模式和内模式 5.关系和关系数据库 6.主键与外键 7.SQL语言 8.索引与视图 9.数据库安全 10.数据库完整性 11.数据依赖和函数依赖 12.范式&#xff1f;三范式&#xff1f;为什么要遵…

WMS助力企业数字化转型(六)

在当今数字化时代&#xff0c;仓库管理系统&#xff08;WMS&#xff09;作为推动企业数字化转型的重要工具&#xff0c;通过实时数据监控、自动化操作和智能分析&#xff0c;大幅提升了仓储管理的效率与精准度&#xff0c;为企业在供应链优化、库存控制和客户满意度方面带来了显…