编程 vue中使用rsa加密和数字签名和后端如php进行加密交互

2024-11-19 02:17:27 +0800 CST views 3310

#后端RAS加密后端请看这里
1.首先我们安装

npm install jsencrypt

可选安装 crypto-js 这个依赖主要用来进行签名和签名效验

npm instll crypto-js

2.引入模块,如果使用uniapp开发的把对应文件复制到项目目录。下面的代码示例是使用uniapp开发的项目。

import { JSEncrypt } from '../utils/jsencrypt'
import CryptoJS from '../utils/crypto-js'
let privkey = "-----BEGIN RSA PRIVATE KEY-----MIICWwIBAAKBgQCEwLlhjT5UbnQ0czFnaVzQa59RAKzie+Y30jq/TGHDADPiRmqZyZd08O3S5sXh7BC3UaOYbIyA0xLdNCAyk53/ij3LyRa4pKrJihHJ7kNlSCUJuFeiTXdLE03InfJPTFSqaXodeAA08EOi8UuX2f0TiAZ/miM5xnhTxL2NsI8I5wIDAQABAoGAOEecUAcZTaImEbZkU3sPpix6NlUa9kmgqDmwPjmbmJgVZvCDcP9N/n3F1YuQiN8TlyQ9PvmF93eEn9Lhc4+xg2kQF9wnQp9gKQtmSZyd4Lw9NHvBy45Aj9iJSQQ/jeMVZ+O0Yne//ErhL/X5DUOWGwcRKtw4qt7bf+u0VpcH+wECQQCIRllBIHqSEsSM608o+mDdqmB//NloVaj0lpwG+cNnJ7iWWbv2d+qdTH0sIRsC+4WorZx0YfFJryi4ZUYUF/sRAkEA+WI/MFO4TIFi3VAncyziRJxETNy+kzMxsyj4bLqb8KTrZs4P3oifI71U4SrAr3c14xFekIfL6145WweLZQwUdwJAZ0+N0sXgpmT8BSlPNe27CdFknyL9Xw+xqtuTJearsMR4N+OHj+6ROvcF3jKq27P7PEmB1ul5lzbnVAPTAOC9QQJAYPj/MT+czsMROpXMgVDWu284b9r2kC68CLrJvx3hPXYjw1oleZcOqssYkmYZfyGP5rf+WZ00glWlX+xTG/vSiQJAKVzxiohMqnUuNajLFXmUXgbYrCaL0prBV+qU9W7h8bd1ymTh8N1UHKH+HzA5Hw8s/kt5vXDsTGB8SKlLuu8Wjg==-----END RSA PRIVATE KEY-----";
let pubkey  = "-----BEGIN PUBLIC KEY-----MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCEwLlhjT5UbnQ0czFnaVzQa59RAKzie+Y30jq/TGHDADPiRmqZyZd08O3S5sXh7BC3UaOYbIyA0xLdNCAyk53/ij3LyRa4pKrJihHJ7kNlSCUJuFeiTXdLE03InfJPTFSqaXodeAA08EOi8UuX2f0TiAZ/miM5xnhTxL2NsI8I5wIDAQAB-----END PUBLIC KEY-----";
//公私加密
let encrypt = (data) =>{
	let text = JSON.stringify(data);
	var encrypt = new JSEncrypt();
	encrypt.setPublicKey(pubkey);
	return encrypt.encrypt(text);
}
//私钥解密
let  decrypt = (data) =>{
		var decrypt = new JSEncrypt();
			decrypt.setPrivateKey(privkey);
		return decrypt.decrypt(data);
}
//私钥签名
let signature = (data) =>{
	let text = JSON.stringify(data);
	var sign = new JSEncrypt();
		sign.setPrivateKey(privkey);
	return sign.sign(text, CryptoJS.SHA256, "sha256");
}
//公钥签名检查 return true false
let signverify = (data,signature) =>{
	let text = JSON.stringify(data);
	var verify = new JSEncrypt();
		verify.setPublicKey(pubkey);
	return verify.verify(text, signature, CryptoJS.SHA256);
}

3.数据测试

let str = {"name": "芊诺网络", "site": "qiannnuonet.com"};
let md  = this.iGlobal.encrypt(str);
console.log(md,"密文");
let str1 = this.iGlobal.decrypt(md);
console.log(str1,"原文");
let sign = this.iGlobal.signature(str);
console.log(sign,"签名");
str.id=1;
let signverify = this.iGlobal.signverify(str,sign);
console.log(signverify,"签名效检");

4.结果
rsa.png

5.最后,前端生成一对公私匙后端生成一对一对公私匙然后彼此交换下。前端的在做下隐藏比如加密公私匙或者直接向后端请求数据来获取这对公私匙。总之避免其他人0成本获取就可以了。

复制全文 生成海报 加密 安全 后端开发 uniapp 数据保护

推荐文章

Go语言中的mysql数据库操作指南
2024-11-19 03:00:22 +0800 CST
如何优化网页的 SEO 架构
2024-11-18 14:32:08 +0800 CST
html一份退出酒场的告知书
2024-11-18 18:14:45 +0800 CST
一键配置本地yum源
2024-11-18 14:45:15 +0800 CST
JS中 `sleep` 方法的实现
2024-11-19 08:10:32 +0800 CST
curl错误代码表
2024-11-17 09:34:46 +0800 CST
java MySQL如何获取唯一订单编号?
2024-11-18 18:51:44 +0800 CST
Vue3中如何处理权限控制?
2024-11-18 05:36:30 +0800 CST
robots.txt 的写法及用法
2024-11-19 01:44:21 +0800 CST
PostgreSQL日常运维命令总结分享
2024-11-18 06:58:22 +0800 CST
Elasticsearch 文档操作
2024-11-18 12:36:01 +0800 CST
避免 Go 语言中的接口污染
2024-11-19 05:20:53 +0800 CST
Node.js中接入微信支付
2024-11-19 06:28:31 +0800 CST
120个实用CSS技巧汇总合集
2025-06-23 13:19:55 +0800 CST
程序员茄子在线接单