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

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

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

推荐文章

JavaScript设计模式:适配器模式
2024-11-18 17:51:43 +0800 CST
Golang 中应该知道的 defer 知识
2024-11-18 13:18:56 +0800 CST
Boost.Asio: 一个美轮美奂的C++库
2024-11-18 23:09:42 +0800 CST
MySQL用命令行复制表的方法
2024-11-17 05:03:46 +0800 CST
Rust 并发执行异步操作
2024-11-18 13:32:18 +0800 CST
PHP来做一个短网址(短链接)服务
2024-11-17 22:18:37 +0800 CST
Vue 3 中的 Watch 实现及最佳实践
2024-11-18 22:18:40 +0800 CST
Rust开发笔记 | Rust的交互式Shell
2024-11-18 19:55:44 +0800 CST
Golang Sync.Once 使用与原理
2024-11-17 03:53:42 +0800 CST
Python设计模式之工厂模式详解
2024-11-19 09:36:23 +0800 CST
前端如何给页面添加水印
2024-11-19 07:12:56 +0800 CST
25个实用的JavaScript单行代码片段
2024-11-18 04:59:49 +0800 CST
程序员茄子在线接单