项目中在用户登录时需要进行用户名和密码加密,这里选用了RSA非对称加密的方式.

公钥私钥:OpenSSL的公钥私钥(Node crypto模块限制)

前端: jsencrypt库加密

后端: Node crypto模块

使用openssl生成公钥私钥

linux生成公钥私钥命令:

genrsa -out rsa_private_key.pem 1024 // 生成1024位私钥

pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM –nocrypt // 把RSA私钥转换成PKCS8格式

rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem // 生成对应公钥

这里已经生成了公钥和私钥,公钥私钥的使用可以分为两种方式

在使用时使用fs.readFileSync()来读取

直接将公私钥拷贝出来放到配置文件中(私钥要保证正确的换行格式,否则crypto不能正确的使用私钥,可以在每行末尾添加\n\来确保格式正确)

前端使用jsencrypt库加密

这个库可以使用模块加载的方式使用,下面的代码也是使用这种方式,当然也可以在页面中通过

const JSEncrypt = require("jsencrypt"); // 引入模块

const str = "i will be encrypto";

const encrypt = new JSEncrypt.JSEncrypt(); // 实例化加密对象

encrypt.setPublicKey(publicKey); // 设置公钥

const encryptoPasswd = encrypt.encrypt(str) // 加密明文

服务端使用Node crypto模块解密

解密函数实现

function rsaDecrypt(text) {

const privateKey = config.privateKey;

let textBuffer, decryptText;

try {

textBuffer= new Buffer(text, "base64"); // jsencrypt 库在加密后使用了base64编码,所以这里要先将base64编码后的密文转成buffer

decryptText= crypto.privateDecrypt({

key: new Buffer(privateKey), // 如果通过文件方式读入就不必转成Buffer

padding: constants.RSA_PKCS1_PADDING // 因为前端加密库使用的RSA_PKCS1_PADDING标准填充,所以这里也要使用RSA_PKCS1_PADDING

}, textBuffer).toString();

} catch (err) {

throw (new CommonError("errorMsg", errorCode));

}

return decryptText;

}

rsa php前台加密后台解密源码,使用RSA实现前端公钥加密后端私钥解密相关推荐

  1. 淘宝客优惠券领取微信小程序前台和后台C#源码

    一.源码特点        1.这是一个微信小程序对接淘宝的淘宝客api自助搜索优惠券领取程序,简单易学,有兴趣的欢迎下载        2.后台采用asp.netMvc框架开发.实现了调用阿里妈妈的 ...

  2. rsa加密c语言源码库,RSA加密算法源代码C语言实现.doc-资源下载在线文库www.lddoc.cn...

    RSA加密算法_源代码__C语言实现.doc RSA 算法 1978 年就出现了这种算法,它是第一个既能用于数据加密也能用于数字签名的算法.它易于理解和操作,也很流行.算法的名字以发明者的名字命名Ro ...

  3. 基于java的rsa加密程序_RSA rsa加密程序,rsa java源码和 rsa的jsp Crypt_De algrithms 解密 238万源代码下载- www.pudn.com...

    文件名称: RSA下载 收藏√  [ 5  4  3  2  1 ] 开发工具: Java 文件大小: 169 KB 上传时间: 2014-04-23 下载次数: 0 提 供 者: 姚双奇 详细说明: ...

  4. C#毕业设计——基于C#+asp.net+C++的RSA文件加密系统设计与实现(毕业论文+程序源码)——RSA文件加密系统

    基于C#+asp.net+C++的RSA文件加密系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于C#+asp.net+C++的RSA文件加密系统设计与实现,文章末尾附有本毕业设计的论文 ...

  5. P2P金融借贷项目 前台+后台+数据库源码+移动端后台

    P2P金融借贷项目 前台+后台+数据库源码+移动端后台 辛辛苦苦操了一个月的蛋,: 项目运行环境 项目需求 项目基本模块图片 项目运行环境 本文档将从系统架构方面对系统进行综合概述,详细讨论HR项目所 ...

  6. 基于ASP.NET的精美企业网站后台管理系统源码

    ASP.NET精美企业网站后台管理系统源码 源码类型:全开源免费分享,需要源码学习可私信. 很不错的企业网站后台源码,功能齐全,非常适合二次开发和企业应用. 一.前台页面: 1.网站首页 2.关于公司 ...

  7. java计算机毕业设计服装连锁店后台管理系统源码+mysql数据库+系统+lw文档+部署

    java计算机毕业设计服装连锁店后台管理系统源码+mysql数据库+系统+lw文档+部署 java计算机毕业设计服装连锁店后台管理系统源码+mysql数据库+系统+lw文档+部署 本源码技术栈: 项目 ...

  8. 计算机毕业设计springboot健身中心前台信息管理系统qotli源码+系统+程序+lw文档+部署

    计算机毕业设计springboot健身中心前台信息管理系统qotli源码+系统+程序+lw文档+部署 计算机毕业设计springboot健身中心前台信息管理系统qotli源码+系统+程序+lw文档+部 ...

  9. 海豚php源码,基于 ThinkPHP5.1 实现的海豚后台登录源码分析

    基于 thinkphp5.1 实现的海豚后台登录源码分析 一. 首先来到登录代码处,部分代码截图,大家有兴趣可以自己去看源码 登录处开始 public function signin() { if ( ...

最新文章

  1. Android Studio升级后报 method not found: 'runProguard'的错误
  2. left join on and 与 left join on where的区别
  3. mysql binary blob区别_SQL中binary 和 varbinary的区别 blob
  4. 《C#高级编程》笔记系列第三弹
  5. 深度学习三巨头共获 2018 年图灵奖(经典重温)!
  6. 51nod1245 Binomial Coefficients Revenge
  7. 【北京工业大学申请个人学生邮箱】
  8. python抢票软件源代码_一百多行python代码实现抢票助手
  9. 漫反射(diffuse reflection)
  10. 岌岌可危 中立之争决定云计算未来
  11. PyG教程(2):图数据
  12. 写给想学Linux系统的人
  13. jbox弹窗_Ztree结合jbox实现弹窗树结构
  14. Centos8.5.211降级为Centos8.4-1.2105
  15. 常州工学院Java作业03
  16. 城市太美、生活步调太悠闲
  17. AR+LBS线下社交游戏尝试
  18. 嵌入式开发要学习哪些知识
  19. 作为一名IT狗,天天加班,快变秃子了,我决定去植发……
  20. WaveProgressBar -- 波浪进度条

热门文章

  1. php mysql循环语句怎么写_mysql数据库循环语句该怎么写???
  2. kali linux关闭进程,技术|如何使用 Kali Linux 黑掉 Windows
  3. MATLAB基础教程(11)——二维中的数据可视化(续)
  4. 【OpenCV 例程200篇】16. 不同尺寸的图像加法
  5. java导出csv文件_R语言数据导入与导出
  6. centos sudo不能运行_如何在Linux中配置sudo访问权限
  7. 为什么服务器要选择 Linux,这里总结了 10 大理由
  8. python-week5
  9. Python测试开发django5.templates模板变量传参
  10. 哈夫曼树(Huffman Tree)的介绍、画法、哈夫曼树的可视化显示(Python代码实现)