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

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

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

推荐文章

JS中 `sleep` 方法的实现
2024-11-19 08:10:32 +0800 CST
推荐几个前端常用的工具网站
2024-11-19 07:58:08 +0800 CST
JavaScript设计模式:单例模式
2024-11-18 10:57:41 +0800 CST
记录一次服务器的优化对比
2024-11-19 09:18:23 +0800 CST
nuxt.js服务端渲染框架
2024-11-17 18:20:42 +0800 CST
2024年微信小程序开发价格概览
2024-11-19 06:40:52 +0800 CST
JavaScript 异步编程入门
2024-11-19 07:07:43 +0800 CST
Nginx负载均衡详解
2024-11-17 07:43:48 +0800 CST
JavaScript 的模板字符串
2024-11-18 22:44:09 +0800 CST
thinkphp swoole websocket 结合的demo
2024-11-18 10:18:17 +0800 CST
mendeley2 一个Python管理文献的库
2024-11-19 02:56:20 +0800 CST
使用Python提取图片中的GPS信息
2024-11-18 13:46:22 +0800 CST
JavaScript 实现访问本地文件夹
2024-11-18 23:12:47 +0800 CST
filecmp,一个Python中非常有用的库
2024-11-19 03:23:11 +0800 CST
程序员茄子在线接单