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

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

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

推荐文章

一文详解回调地狱
2024-11-19 05:05:31 +0800 CST
批量导入scv数据库
2024-11-17 05:07:51 +0800 CST
jQuery `$.extend()` 用法总结
2024-11-19 02:12:45 +0800 CST
一些实用的前端开发工具网站
2024-11-18 14:30:55 +0800 CST
#免密码登录服务器
2024-11-19 04:29:52 +0800 CST
JavaScript设计模式:单例模式
2024-11-18 10:57:41 +0800 CST
Golang在整洁架构中优雅使用事务
2024-11-18 19:26:04 +0800 CST
Vue3中如何进行错误处理?
2024-11-18 05:17:47 +0800 CST
PHP 允许跨域的终极解决办法
2024-11-19 08:12:52 +0800 CST
如何将TypeScript与Vue3结合使用
2024-11-19 01:47:20 +0800 CST
前端项目中图片的使用规范
2024-11-19 09:30:04 +0800 CST
Vue 3 路由守卫详解与实战
2024-11-17 04:39:17 +0800 CST
js迭代器
2024-11-19 07:49:47 +0800 CST
基于Webman + Vue3中后台框架SaiAdmin
2024-11-19 09:47:53 +0800 CST
liunx宝塔php7.3安装mongodb扩展
2024-11-17 11:56:14 +0800 CST
16.6k+ 开源精准 IP 地址库
2024-11-17 23:14:40 +0800 CST
在 Nginx 中保存并记录 POST 数据
2024-11-19 06:54:06 +0800 CST
Graphene:一个无敌的 Python 库!
2024-11-19 04:32:49 +0800 CST
html流光登陆页面
2024-11-18 15:36:18 +0800 CST
使用xshell上传和下载文件
2024-11-18 12:55:11 +0800 CST
Python设计模式之工厂模式详解
2024-11-19 09:36:23 +0800 CST
总结出30个代码前端代码规范
2024-11-19 07:59:43 +0800 CST
程序员茄子在线接单