首页
关于
留言
统计
更多
友联
壁纸
图床
Search
1
下次见面又是什么时候呢
814 阅读
2
joe主题优化记录(更新中)
551 阅读
3
在线网页体重记录表
541 阅读
4
小程序npn构建
463 阅读
5
和他
437 阅读
Search
标签搜索
日常
joe
js
php
window
编程知识
小程序
html
Blank
累计撰写
23
篇文章
累计收到
10
条评论
首页
栏目
日常记录
微言微语
风景分享
生活知识
电脑知识
编程知识
办公技巧
node
最新文章
页面
关于
留言
统计
友联
壁纸
图床
搜索到
1
篇与
编程知识
的结果
RSA加密示例
前言这是一种非对称式加密,很适合用在前端与后端的通信上它分为公钥和私钥,公钥仅可用于加密,私钥用于解密这样一来就可以将公钥发送给客户端,客户端拿着公钥加密后返回给服务器,服务器再使用私钥进行解密我小程序也采用了这种加密方式给需要的大佬借鉴一下首先是php端代码(后端或者服务器端),这里使用了base64_decode和url解码,因为我前端也进行了相应的编码教程我们需要先生成一个密钥在线RAS密钥生成:https://www.lddgo.net/encrypt/rsa // 解密 function Rsa_decrypts($data) { // 加载openssl扩展 if (!extension_loaded('openssl')) { die('OpenSSL 扩展未加载'); } // 密钥文件路径 $privateKeyFile = '改为自己路径private_key.pem'; $publicKeyFile = '改为自己路径public_key.pem'; // 加载私钥 $privateKeyResource = openssl_pkey_get_private(file_get_contents($privateKeyFile)); if ($privateKeyResource === false) { return '无法加载私钥'; } $data=urldecode($data); $data=base64_decode($data); $decryptedText = ''; if (openssl_private_decrypt(base64_decode($data), $decryptedText, $privateKeyResource, OPENSSL_PKCS1_PADDING) === false) { return ''; } return $decryptedText; } 然后我们开始在微信小程序安装一下相应的库选择小程序的调试器 —— 选择终端 —— 输入npm i wxmp-rsa -S进行安装安装完成后小程序目录里面会生成node_modules文件夹,里面会有wxmp-rsa文件夹安装完成后在编辑器左上角的菜单栏中找到工具 —— 构建npm完成后小程序文件目录会构建出miniprogram_npm文件夹,里面会有wxmp-rsa文件夹然后将你就可以开始使用了,下面是一个参考示例,同样这里我使用了Base64和url编码,./base64.js可以百度下载一个,如果不需要移除即可,这样就可以实现小程序与后端的加密通讯了,但是需要注意数据长度不能超过太长!否则将加密失败! // 导入包 import WxmpRsa from 'wxmp-rsa' const Base64 = require('./base64.js'); // 实例化rsa const rsa = new WxmpRsa() rsa.default_key_size = 512 const publicKey = "这里放公钥" // 加密 function encrypt(data) { if (typeof data != 'string') { data = data.toString() } if (data == '') { return '' } if (publicKey != "") { rsa.setPublicKey(publicKey) const cryptStr = rsa.encryptLong(data) var r = Base64.encode(cryptStr) var r = encodeURIComponent(r) return r } return '' } //暴露接口 module.exports = { encrypt, UPglobalData, }
2023年11月02日
229 阅读
0 评论
2 点赞