欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 创投人物 > vue RSA加密解密(解决加密过长,解密过长返回为null的问题)

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

2024/10/25 17:15:00 来源:https://blog.csdn.net/qq_36529240/article/details/141159791  浏览:    关键词:vue RSA加密解密(解决加密过长,解密过长返回为null的问题)

1安装

npm i jsencrypt

2.rsa.js

/* 产引入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.在页面使用

<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 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com