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

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

#后端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 数据保护

推荐文章

Web浏览器的定时器问题思考
2024-11-18 22:19:55 +0800 CST
Gin 与 Layui 分页 HTML 生成工具
2024-11-19 09:20:21 +0800 CST
Golang 随机公平库 satmihir/fair
2024-11-19 03:28:37 +0800 CST
使用Rust进行跨平台GUI开发
2024-11-18 20:51:20 +0800 CST
38个实用的JavaScript技巧
2024-11-19 07:42:44 +0800 CST
git使用笔记
2024-11-18 18:17:44 +0800 CST
php机器学习神经网络库
2024-11-19 09:03:47 +0800 CST
windows安装sphinx3.0.3(中文检索)
2024-11-17 05:23:31 +0800 CST
thinkphp swoole websocket 结合的demo
2024-11-18 10:18:17 +0800 CST
解决 PHP 中的 HTTP 请求超时问题
2024-11-19 09:10:35 +0800 CST
Vue3中如何进行性能优化?
2024-11-17 22:52:59 +0800 CST
Rust async/await 异步运行时
2024-11-18 19:04:17 +0800 CST
MySQL 主从同步一致性详解
2024-11-19 02:49:19 +0800 CST
PHP如何进行MySQL数据备份?
2024-11-18 20:40:25 +0800 CST
Vue 中如何处理跨组件通信?
2024-11-17 15:59:54 +0800 CST
程序员茄子在线接单