首页
Javascript
Html
Css
Node.js
Electron
移动开发
小程序
工具类

服务端

浏览器相关
前端收藏
其他
关于

nodejs前后端添加RSA加密验证

2019年12月30日 发布 阅读(260) 作者:Jerman

这里不讨论密码的生成,生成RSA密码请参考https://www.imqianduan.com/server/RSA-public-private.html

前端添加rsa加密

背景: react项目

前端RSA加密使用jsencrypt,安装:

  1. npm install jsencrypt --save

https://www.npmjs.com/package/jsencrypt

使用,直接上代码

  1. import JSEncrypt from 'jsencrypt';
  2. const Encrypt = new JSEncrypt();
  3. let publicKey = '';
  4. publicKey += '-----BEGIN PUBLIC KEY-----';
  5. publicKey += 'FJDLSKAJKLJ3L2J49FIDSAJFLKSDJAK32FKJDSAFJKDKFKDFJKDSLAFLSAFDKSAFKDASLFD';
  6. publicKey += 'FJDLSKAJKLJ3L2J49FIDSAJFLKSDJAK32FKJDSAFJKDKFKDFJKDSLAFLSAFDKSAFKDASLFD';
  7. publicKey += 'FJDLSKAJKLJ3L2J49FIDSAJFLKSDJAK32FKJDSAFJKDKFKDFJKDSLAFLSAFDKSAFKDASLFD';
  8. publicKey += 'FJDLSKAJKLJ3L2J49FIDSAJF';
  9. publicKey += '-----END PUBLIC KEY-----';
  10. export default {
  11. /**
  12. * 加密一个参数
  13. * @param {*} value 需要加密的值
  14. */
  15. encrypt(value) {
  16. Encrypt.setPublicKey(publicKey);
  17. return Encrypt.encrypt(value);
  18. },
  19. };

注意:

  • 上面代码的公钥当然是错的(不要去试)
  • 公钥有换行,不要偿试把换行去掉,拼成一行

后端(NODEJS)添加RSA解密

背景:nodejs项目

jsencrypt是前端框架,不要偿试在后端使用,后台我们使用node-rsa,安装:
https://www.npmjs.com/package/node-rsa

  1. npm install node-rsa --save

后台RSA的目录结构

  1. .
  2. |-- pem
  3. | |-- rsa_private_key.pem
  4. | `-- rsa_public_key.pem
  5. `-- rsa.js

后台代码(rsa.js):

  1. 'use strict';
  2. const fs = require('fs');
  3. const path = require('path');
  4. const RSA = require('node-rsa');
  5. // RSA解密
  6. const keyPath = path.resolve(__dirname, './pem/rsa_private_key.pem');
  7. const privatePem = fs.readFileSync(keyPath).toString();
  8. const privateKey = new RSA(privatePem);
  9. // 转成pkcs1格式
  10. privateKey.setOptions({ encryptionScheme: 'pkcs1' });
  11. module.exports = {
  12. /**
  13. * 解密
  14. * @param {*} value 需要解密的值
  15. */
  16. decrypt(value) {
  17. let data = value;
  18. // 使用try...catch...捕获解密失败错误(如公钥错误),返回controller处理
  19. try {
  20. data = privateKey.decrypt(value, 'utf8');
  21. return data;
  22. } catch (err) {
  23. return false;
  24. }
  25. },
  26. };

后台调用:

  1. const RSA = require('./rsa/rsa');
  2. // 要解密使用RSA公钥加密的password字段
  3. RSA.decrypt(password)
版权声明:本站文章除特别声明外,均采用署名-非商业性使用-禁止演绎 4.0 国际 许可协议,如需转载,请注明出处

评论

  •  
  • nginx优化跨域的OPTIONS请求

    需要跨域的项目,很多时候每次都会发送OPTIONS请求,能不能优化呢?

    发布:2020-03-07 阅读(136)

  • mongodb之多表关联查询并分页

    mongodb多表关联查询

    发布:2020-02-29 阅读(103)

  • 网易高手:角色权限设计的100种解法

    角色、权限、用户之间的关系,以及如何设计

    发布:2020-02-22 阅读(134)

  • 理解 JWT 的使用场景和优劣

    这样形如 A.B.C 的字符串时能敏感地认出这是使用了 jwt。发了这两篇文章后,有不少读者在文末留言,表达了对 jwt 使用方式的一些疑惑,以及到底哪些场景适合使用 jwt。我并不是 jwt 方面的专家,和不少读者一样,起初研究时我也存在相同疑惑,甚至在逐渐接触后产生了更大的疑惑,经过这段时间项目中的使用和一些自己思考,把个人的总结整理成此文。

    发布:2020-01-09 阅读(125)

  • Idea每次修改jsp都需要重启tomcat解决方法

    发布:2020-01-03 阅读(229)

  • 实现token自动续期

    go语言实现token自动续期

    发布:2019-12-31 阅读(510)

  • nodejs前后端添加RSA加密验证

    RSA加密的玩法

    发布:2019-12-30 阅读(260)

  • 使用OpenSSL生成RSA公钥和私钥

    发布:2019-12-29 阅读(179)

  • MongoDB unique唯一索引值,如何支持空值 ?

    发布:2019-12-29 阅读(164)

  • 捕获mongoose save()报错并返回Controller

    捕获save报错,返回controller

    发布:2019-12-29 阅读(138)

  • windows下安装配置nginx 反向代理

    win10下安装nginx,配置返向代理

    发布:2019-12-11 阅读(154)

  • Client does not support authentication protocol requested by server

    ERROR 9076 nodejs.SequelizeConnectionError: Client does not support authentication protocol requested by server; consider upgrading MySQL client

    发布:2019-09-01 阅读(383)

  • Linux rpm命令详解

    RPM是RedHat Package Manager(RedHat软件包管理工具)类似Windows里面的“添加/删除程序

    发布:2019-08-02 阅读(403)

  • Linux中apt与apt-get命令的区别与解释

    Ubuntu 16.04 发布时,一个引人注目的新特性便是 apt 命令的引入。其实早在 2014 年,apt 命令就已经发布了第一个稳定版,只是直到 2016 年的 Ubuntu 16.04 系统发布时才开始引人关注。随着 apt install package 命令的使用频率和普遍性逐步超过 apt-get install package,越来越多的其它 Linux 发行版也开始遵循 Ubuntu 的脚步,开始鼓励用户使用 apt 而不是 apt-get。

    发布:2019-03-04 阅读(636)

  • centos7设置、查看、删除环境变量的方法

    centos查看环境变量与设置环境变量在使用过程中很常见,本文整理了一些常用的与环境变量相关的命令,感兴趣的朋友可以参考下希望对你有所帮助

    发布:2018-12-27 阅读(1721)

  • linux CentOS 安装oh my Zsh

    linux cenos下安装oh my zsh,oh my zsh 用于管理zsh配置,使shell界面更美观。 Zsh 是一款功能强大终端(shell)软件,既可以作为一个交互式终端,也可以作为一个脚本解释器。它在兼容 Bash 的同时 (默认不兼容,除非设置成 emulate sh) 还有提供了很多改进。

    发布:2018-12-20 阅读(1969)

  • Nginx配置SSL证书,实现https访问

    以腾讯云为例,配置nginx,实现https访问

    发布:2018-11-23 阅读(1031)

  • nginx设置二级域名指向子目录

    nginx设置二级域名指向子目录

    发布:2018-11-22 阅读(1307)

  • nginx性能优化

    发现ip访问比nginx快多了,知道nginx出问题了~ 得给他优化优化。优化后由原来的2.7s打开,到600ms打开~nginx优化还是有用的

    发布:2018-11-22 阅读(627)

  • Nginx开启gzip

    通过nginx开启gzip设置

    发布:2018-10-15 阅读(641)

  • linux云服务通过Nginx绑定多个域名

    通过Nginx反向代理,在一个云服务器上绑定多个域名,不同的域名访问不同的目录,端口

    发布:2018-10-11 阅读(959)

  • CentOS 7上安装Nginx

    如何在Linux(CentOS 7)上安装Nginx,作为反向代理服务器。

    发布:2018-10-11 阅读(819)

  • nginx实现CORS跨域配置

    nginx服务端实现CORS跨域配置

    发布:2018-06-20 阅读(96)

  • 关于UUID的二三事

    UUID,是Universally Unique Identifier的缩写,UUID出现的目的,是为了让分布式系统可以不借助中心节点,就可以生成UUID来标识一些唯一的信息;

    发布:2017-06-26 阅读(119)

  • tail命令详情

    命令从指定点开始将 File 参数指定的文件写到标准输出。如果没有指定文件,那么会使用标准输入。Number 变量指定将多少单元写到标准输出。Number 变量的值可以是正的或负的整数。如果值的前面有 +(加号),从文件开头指定的单元数开始将文件写到标准输出。如果值的前面有 -(减号),那么从文件末尾指定的单元数开始将文件写到标准输出。如果值前面没有 +(加号)或 -(减号),那么从文件末尾指定的单元号开始读取文件

    发布:2017-05-23 阅读(771)

  • 如何防止网站被爬虫爬取的几种办法

    今天想对一个问题进行分析和讨论,就是关于爬虫对网站页面爬取的问题,有些网站通过爬虫去采集其它的网站页面信息作为己用,大量的爬取行为会对web服务器有比较性能有影响,主要的表现就是会变得很慢。

    发布:2014-05-26 阅读(97)

  • 网站设置301转各的各种方法

    将不带www的域名301重定向到带www的域名,利于SEO

    发布:2013-11-29 阅读(626)