Rsa加密和解密
1.安装:
npm install jsencrypt --save-dev
2.创建rsa.js
1.在src/util/文件夹下创建rsa.js文件
2. 引入'jsencrypt', 'encryptlong'
/* 产引入jsencrypt实现数据RSA加密 */ import JSEncrypt from 'jsencrypt/bin/jsencrypt' // 处理长文本数据时报错 jsencrypt.js Message too long for RSA /* 产引入encryptlong实现数据RSA加密 */
import Encrypt from 'encryptlong' // encryptlong是基于jsencrypt扩展的长文本分段加解密功能。
3.准备好publicKey(公钥)&& privateKey (私钥)
// 公钥key const publicKey = 'MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBANL378k3RiZHWx5AfJqdH9xRNBmD9wGD\n' + '2iRe41HdTNF8RUhNnHit5NpMNtGL0NPTSSpPjjI1kJfVorRvaQerUgkCAwEAAQ==' // 私钥key const privateKey = 'MIIBUwIBADANBgkqhkiG9w0BAQEFAASCAT0wggE5AgEAAkEA0vfvyTdGJkdbHkB8\n' + 'mp0f3FE0GYP3AYPaJF7jUd1M0XxFSE2ceK3k2kw20YvQ09NJKk+OMjWQl9WitG9p\n' + 'B6tSCQIDAQABAkA2SimBrWC2/wvauBuYqjCFwLvYiRYqZKThUS3MZlebXJiLB+Ue\n' + '/gUifAAKIg1avttUZsHBHrop4qfJCwAI0+YRAiEA+W3NK/RaXtnRqmoUUkb59zsZ\n' + 'UBLpvZgQPfj1MhyHDz0CIQDYhsAhPJ3mgS64NbUZmGWuuNKp5coY2GIj/zYDMJp6\n' + 'vQIgUueLFXv/eZ1ekgz2Oi67MNCk5jeTF2BurZqNLR3MSmUCIFT3Q6uHMtsB9Eha\n' + '4u7hS31tj1UWE+D+ADzp59MGnoftAiBeHT7gDMuqeJHPL4b+kC+gzV4FGTfhR9q3\n' + 'tTbklZkD2A=='
4.写完整的加密解密函数
export default {/* 加密 *//* 解密 - PRIVATE_KEY - 验证 */ decrypt(data) { const PRIVATE_KEY = privateKey var encryptor = new Encrypt() encryptor.setPrivateKey(PRIVATE_KEY) // 如果是对象/数组的话,需要先JSON.stringify转换成字符串 var result = encryptor.decryptLong(data) return result } };
/* 超长内容 */
export function encrypt(data){
const enctyptor = new JSEncrpt();
const publicKey = PUBLIC_KEY;
encryptor.setPublicKey(publicKey);
return encryptor.encryptLong(data)
}
5.完整的Rsa.js文件
/* 产引入jsencrypt实现数据RSA加密 */ import JSEncrypt from 'jsencrypt' // 处理长文本数据时报错 jsencrypt.js Message too long for RSA /* 产引入encryptlong实现数据RSA加密 */ import Encrypt from 'encryptlong' // encryptlong是基于jsencrypt扩展的长文本分段加解密功能。 // 密钥对生成 http://web.chacuo.net/netrsakeypair // 公钥key const PUBLIC_KEY= 'MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBANL378k3RiZHWx5AfJqdH9xRNBmD9wGD\n' + '2iRe41HdTNF8RUhNnHit5NpMNtGL0NPTSSpPjjI1kJfVorRvaQerUgkCAwEAAQ==' // 私钥key const privateKey = 'MIIBUwIBADANBgkqhkiG9w0BAQEFAASCAT0wggE5AgEAAkEA0vfvyTdGJkdbHkB8\n' + 'mp0f3FE0GYP3AYPaJF7jUd1M0XxFSE2ceK3k2kw20YvQ09NJKk+OMjWQl9WitG9p\n' + 'B6tSCQIDAQABAkA2SimBrWC2/wvauBuYqjCFwLvYiRYqZKThUS3MZlebXJiLB+Ue\n' + '/gUifAAKIg1avttUZsHBHrop4qfJCwAI0+YRAiEA+W3NK/RaXtnRqmoUUkb59zsZ\n' + 'UBLpvZgQPfj1MhyHDz0CIQDYhsAhPJ3mgS64NbUZmGWuuNKp5coY2GIj/zYDMJp6\n' + 'vQIgUueLFXv/eZ1ekgz2Oi67MNCk5jeTF2BurZqNLR3MSmUCIFT3Q6uHMtsB9Eha\n' + '4u7hS31tj1UWE+D+ADzp59MGnoftAiBeHT7gDMuqeJHPL4b+kC+gzV4FGTfhR9q3\n' + 'tTbklZkD2A==' export default {/* 解密 - PRIVATE_KEY - 验证 */ decrypt(data) { const PRIVATE_KEY = privateKey var encryptor = new Encrypt() encryptor.setPrivateKey(PRIVATE_KEY) // 如果是对象/数组的话,需要先JSON.stringify转换成字符串 var result = encryptor.decryptLong(data) return result } };
export function encrypt(data){
const enctyptor = new JSEncrpt();
const publicKey = PUBLIC_KEY;
encryptor.setPublicKey(publicKey);
return encryptor.encryptLong(data)
}
6.调用函数
import Rsa from '@/utils/rsa'
import {encrypt} form '@/utils/rsa' let rasEncryptData = { reqStr: '', // 加密前数据 encryptStr: '', // 加密后数据 decryptStr: '' // 解密后数据 } 16:09:00 this.rasEncryptData.encryptStr = encrypt(this.rasEncryptData.reqStr) // 加密 this.rasEncryptData.decryptStr = Rsa.decrypt(this.rasEncryptData.encryptStr) // 解密
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现