博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
前端非对称加密,后端Node.js解密(jsencrypt插件)(不需要密钥转码)
阅读量:5248 次
发布时间:2019-06-14

本文共 1122 字,大约阅读时间需要 3 分钟。

网上找了一圈node.js的RSA解密方法,多数是在同一端进行加密和解密,但是我要的需求是前端加密,发给后台解密。起初前端Vue项目使用jsencrypt插件对数据进行加密,然后傻傻的去后台也npm安装jsencrypt  , 以为用它在后端解密就行, 但是一引用就会报错,它不是一个后端插件,所以不要在后端用装这个。node.js自带有加密模块crypto,但是尝试了很多次用crypto解密前端发过来的数据都报错了:Error: error:0406506C:rsa routines:rsa_ossl_private_decrypt:data greater than mod len。最后实在是没有办法,在npm上搜到了一个用于后台的加解密插件能够成功解密。

1.前端插件:jsencrypt

  • 安装
npm install jsencryptimport { JSEncrypt } from 'jsencrypt'
  • 用法:

  • 关于密钥格式
    前端的公钥我直接赋值的,用记事本打开 pub.pem公钥文件直接复制的,粘贴到代码里会有语法错误,我把每一行都加上了引号,行与行之间用加号连接。
"-----BEGIN RSA PRIVATE KEY-----"+"MIICXAIBAAKBgQC0ujuQTkK10GVRk/V/QkavO25DLgsiL22l6QCtCO7+2MVLlZON"+"Qj9d5AgAgmSqqfO0ZNbq6yde1zyXR5Mligq1CU+qNj72mJ6Bk7cz/gWFOcz8bGpK".......后面省略

2.node.js后端插件:node-jsencrypt

  • 安装
npm install --save node-jsencryptconst JSEncrypt = require('node-jsencrypt')
  • 用法:与jsencrypt用法完全相同

  • 关于密钥格式:后端我是用fs读取私钥文件。
// 设置私钥    const prvKey = fs.readFileSync('../openssl/rsa-prv.pem').toString()    // 路径自己决定,用toString()转换成字符串,不转会报错    let jsencrypt = new JSEncrypt()    jsencrypt.setPrivateKey(prvKey)    // 解密数据    let dec_by_prv = jsencrypt.decrypt(前台数据);

1702009-20190720151049677-293648526.png

1702009-20190720151202623-980609440.png

转载于:https://www.cnblogs.com/peatechen/p/11217832.html

你可能感兴趣的文章
A server is already running. Check tmp/pids/server.pid.
查看>>
.net 过滤json等字符串里的特殊字符
查看>>
Python随心记--集合及字符串格式化
查看>>
python实现树结构
查看>>
机器学习竞赛(代码)
查看>>
matplotlib:path effects
查看>>
韵脚与押韵的练习(十三韵)
查看>>
谷歌浏览器(chrome) —— 扩展应用程序
查看>>
web前端开发笔记(2)
查看>>
easyui 功能列传递一行数据
查看>>
c# winform窗体间的传值
查看>>
js 颜色选择器
查看>>
冲刺二
查看>>
Alpha冲刺之事后诸葛亮
查看>>
首次工程项目作业感想
查看>>
【转】Mysql中修改字段左右补齐
查看>>
阿里开发规约-IDEA插件在Eclipse中安装
查看>>
归纳一下input中span提示以及input中onchange事件
查看>>
【改良的选择排序 】
查看>>
js arguments 内置对象
查看>>