网上找了一圈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 jsencrypt
import { JSEncrypt } from 'jsencrypt'
- 关于密钥格式
前端的公钥我直接赋值的,用记事本打开 pub.pem公钥文件直接复制的,粘贴到代码里会有语法错误,我把每一行都加上了引号,行与行之间用加号连接。
"-----BEGIN RSA PRIV