使用JSEncrypt加密解密
<!-- 引入非对称 RSA 加密工具 -->
import
{ JSEncrypt } from
'jsencrypt'
// 加密公钥
const key = `----`
实际项目中 let key ="MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDtID8+nPhjcHtIIo+ACbcx
4ijCyNMXRZeP5dCIaYaS915lFtrwFUPPzpTwA3O
S12zQjowKh/v7ING0KhVQ66n+kI5oEUdAyqrBEY
GCoUDszQ9SRm/zb3KR1dMjKrhRLEC3Q5h7zR7QMLKYg0/Qj0tJtHXsUMjxGE6Wes9dCNKewQIDAQAB"
//
加密,msg就是需要加密的密码,通过ajax发送至后台export
function
setEncrypt (msg) {
const jsencrypt =
new
JSEncrypt()
jsencrypt.setPublicKey(key)
return
jsencrypt.encrypt(msg)
}
// 解密私钥
const privateKey = `---`
// 解密
export
function
decrypt (msg) {
let
decrypt =
new
JSEncrypt()
decrypt.setPrivateKey(privateKey)
var
decryptMsg = decrypt.decrypt(msg)
return
decryptMsg
}
(1)导入JSEncrypt插件 cnpm install jsencrypt --save (2)引入插件 全局引入和局部引入的区别:如果插件在项目的多个文件中使用建议全局引入,如果在单个文件中使用建议局部引入 //main.js全局引入并挂载 import JSEncrypt from "jsencrypt"; Vue.prototype.$jsEncrypt = JSEncrypt; 在要引入的单个文件中导入 import JSEncrypt from 'jsencrypt'; (3)代码编写 //以下代码使用全局引入方式编写; //公钥获取有两种方式:1.跟后端要密钥生成的接口 2.后端直接给你一个公钥字符串 const publicKeyStr = '公钥xxxxxxxxxxxxxxxxxxxxxxxxxx'; //创建jsencrypt加密对象 const jsRsa = new this.$jsEncrypt(); //设置公钥 jsRsa.setPublicKey(publicKeyStr); //使用加密对象给密码加密也可以对用户名等加密 let Rsapassword = jsRsa.encrypt(this.userForm.credential);
// 新建JESencrypt对象 const encryptor = new JSEncrypt() const publicKey = '-----BEGIN PUBLIC KEY-----MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCNOM5OeBxGFRPj2jIpXv8KGrgBolN3duFBwSoDLNFfwd6atlyVM2DgbMLwWsE7zNedPlDB62/e3OzCcxZgjWaEBrnVznqdfL/vhp5RdtZ30qGZxtDraCZBu45I5rELE3wifGvyYWzWVLnA3eiLvhjga+XXvx99LAgg7uadrb1CzwIDAQAB-----END PUBLIC KEY-----' // 设置公钥 encryptor.setPublicKey(publicKey) // publicKey为公钥 // 获取当前时分秒 let time = new Date() let year = time.getFullYear() + '' let month = (time.getMonth() + 1) > 9 ? (time.getMonth() + 1) : '0' + (time.getMonth() + 1) + '' let day = time.getDate() > 9 ? time.getDate() : '0' + time.getDate() let h = time.getHours() let m = time.getMinutes() let s = time.getSeconds() let timeStr = year + month + day + ' ' + h + ':' + m + ':' + s // 使用加密对象给密码加密也可以对用户名等加密 let Rsapassword = encryptor.encrypt(`GY2PJ0N3U*P2^cYwZVVLXxDzO^j8SosI#${timeStr}`); console.log('当前时间', timeStr) console.log('getNewsDetail', Rsapassword)
标签:
vue
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现