在设计用户注册登陆系统的时候,密码的安全传输一直是一个需要特别引起注意的地方,很多网站包括大型网站依然还是采用明文传输密码的方式,安全隐患需要注意。当然,为了防止第三人的恶意窃听,不少网站已经启用了HTTPS的加密传输。

那么,对于一些目前还不具备启用https加密传输的网站来说,飘易建议大家在前端采用js rsa加密,后端再采用PHP/JAVA进行RSA解密的方式保证密码的安全传输。

RSA是什么?

RSA公钥加密算法是1977年由Ron Rivest、Adi Shamirh和LenAdleman在(美国麻省理工学院)开发的。RSA取名来自开发他们三者的名字。RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准。目前该加密方式广泛用于网上银行、数字签名等场合。RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。

JS前端RSA加密需要用到第三方的加密组件JSENCRYPT:第三方加密组件,具体的大家可以到github上看下。

在开始之前,我们先要使用OpenSSL生成一对公钥、私钥,为了方便讲述,飘易还是直接提供一对生成好的公钥、私钥,至于如何生成,网上资料很多了。支付宝那里也有关于RSA密钥生成的文档:RSA密钥文档,支付宝提供了一键生成工具

Windows : 下载

macOS : 下载

私钥:

-----BEGIN RSA PRIVATE KEY-----

MIICXQIBAAKBgQDAbfx4VggVVpcfCjzQ+nEiJ2DLnRg3e2QdDf/m/qMvtqXi4xhw

vbpHfaX46CzQznU8l9NJtF28pTSZSKnE/791MJfVnucVcJcxRAEcpPprb8X3hfdx

KEEYjOPAuVseewmO5cM+x7zi9FWbZ89uOp5sxjMnlVjDaIczKTRx+7vn2wIDAQAB

AoGAZzUWajxKTZeJqh5FjBgmwZi5M7voFynZAjRWAkCkqZye0FfY7e70kA92C1AL

aVqySnNr4WYZuGorEeOFGqHIv1XSowTLgfLkVBZ/SXiep2QYJrR0YevjysvLnTfb

mrdWCqWSj+0AlQg+AvDA/qtvBVMxKymbpo+4bj5H2pPPZ1ECQQDi1PwJQJBYPbpL

vGmP3AmWg467tCeQ+aJGgtQTOK5BH+p0BWFVDX583R437vllkKI8EXgZfqQfsQcj

7XUAXyZVAkEA2SyFbO8roH9JLrEoxxKGeiGZvhPfNl9nXLhX0OFS0ywQaVBJno39

9W5bX5iP5Jzeb3UWsZ/TxzhGc/b4WjAlbwJBAOFuIn1feRT5Y+hY++BJIg4/+N57

EMd4ENpas0HXFvcKLQvZPP42Rvr5FksoaRuTPmjMQ7uyrJICccI3AAy6g3ECQQDE

AyH9+zRmLNxRj0advsOvUcpgu7DYc21oS12/Qs+tl3TMiNGZkNDphwxjkOA217sP

4B92fCn6AnncSslHJXNzAkBo6ujxqIfrZMOG3ON9nXxkWlq39GFS6CzXWscHA3Xz

FMVT1WWU3FR2Kf2QSKiMGv02YcI2xfowim3JnT6600N0

-----END RSA PRIVATE KEY-----

公钥:

-----BEGIN PUBLIC KEY-----

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDAbfx4VggVVpcfCjzQ+nEiJ2DL

nRg3e2QdDf/m/qMvtqXi4xhwvbpHfaX46CzQznU8l9NJtF28pTSZSKnE/791MJfV

nucVcJcxRAEcpPprb8X3hfdxKEEYjOPAuVseewmO5cM+x7zi9FWbZ89uOp5sxjMn

lVjDaIczKTRx+7vn2wIDAQAB

-----END PUBLIC KEY-----

JS前端的加密方法:

var pubkey=’-----BEGIN PUBLIC KEY-----’;

pubkey+=‘MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDAbfx4VggVVpcfCjzQ+nEiJ2DL’;

pubkey+=‘nRg3e2QdDf/m/qMvtqXi4xhwvbpHfaX46CzQznU8l9NJtF28pTSZSKnE/791MJfV’;

pubkey+=‘nucVcJcxRAEcpPprb8X3hfdxKEEYjOPAuVseewmO5cM+x7zi9FWbZ89uOp5sxjMn’;

pubkey+=‘lVjDaIczKTRx+7vn2wIDAQAB’;

pubkey+=’-----END PUBLIC KEY-----’;

// 利用公钥加密

var encrypt = new JSEncrypt();

encrypt.setPublicKey(pubkey);

var encrypted = encrypt.encrypt(JSON.stringify({“encrypt”: “yes”, “password”: $("#password").val()}));

$(’#input’).val(encrypted);

前端页面上对应的input输入框为:

密码:

加密后的密文(base64):

然后后端收到前端提交的数据,利用RSA私钥进行解密,我们以PHP举例来说: <?php //rsa 私钥 $private_key='-----BEGIN RSA PRIVATE KEY----- MIICXQIBAAKBgQDAbfx4VggVVpcfCjzQ+nEiJ2DLnRg3e2QdDf/m/qMvtqXi4xhw vbpHfaX46CzQznU8l9NJtF28pTSZSKnE/791MJfVnucVcJcxRAEcpPprb8X3hfdx KEEYjOPAuVseewmO5cM+x7zi9FWbZ89uOp5sxjMnlVjDaIczKTRx+7vn2wIDAQAB AoGAZzUWajxKTZeJqh5FjBgmwZi5M7voFynZAjRWAkCkqZye0FfY7e70kA92C1AL aVqySnNr4WYZuGorEeOFGqHIv1XSowTLgfLkVBZ/SXiep2QYJrR0YevjysvLnTfb mrdWCqWSj+0AlQg+AvDA/qtvBVMxKymbpo+4bj5H2pPPZ1ECQQDi1PwJQJBYPbpL vGmP3AmWg467tCeQ+aJGgtQTOK5BH+p0BWFVDX583R437vllkKI8EXgZfqQfsQcj 7XUAXyZVAkEA2SyFbO8roH9JLrEoxxKGeiGZvhPfNl9nXLhX0OFS0ywQaVBJno39 9W5bX5iP5Jzeb3UWsZ/TxzhGc/b4WjAlbwJBAOFuIn1feRT5Y+hY++BJIg4/+N57 EMd4ENpas0HXFvcKLQvZPP42Rvr5FksoaRuTPmjMQ7uyrJICccI3AAy6g3ECQQDE AyH9+zRmLNxRj0advsOvUcpgu7DYc21oS12/Qs+tl3TMiNGZkNDphwxjkOA217sP 4B92fCn6AnncSslHJXNzAkBo6ujxqIfrZMOG3ON9nXxkWlq39GFS6CzXWscHA3Xz FMVT1WWU3FR2Kf2QSKiMGv02YcI2xfowim3JnT6600N0 -----END RSA PRIVATE KEY-----'; //从前端拿到的RSA加密数据 $es='CP51TfQsTXrkVeDxkkDJcO9YF6gHmIJfHX6GBLguYCXKl3A7SCn1zhXXUSwmj+MuIOh4HtsKLre3ukUOehU5V5cPYpkajCCQ5mRZfxdbOUEBNW/mT66RYmQ08WO4NGvIRriLx5LsGtS4VF4uE+8aM+mUvab6jOVUUFotqPTUyu4='; //私钥解密 openssl_private_decrypt(base64_decode($es),$decrypted,$private_key); echo $decrypted; $encrypt_exist=false; if(!empty($decrypted)) { $arr = json_decode($decrypted, true); if(array_key_exists("encrypt",$arr)) { if($arr['encrypt']=="yes") $encrypt_exist=true; } } if(!$encrypt_exist) die("抱歉!数据提交错误!"); //继续后续处理 var_dump($arr); ?>

标签:公钥,加密,RSA,JS,-----,KEY,PHP,pubkey

来源: https://blog.csdn.net/weixin_42127508/article/details/112390854

js php后端 安全,前端JS RSA加密,PHP后端解密实现密码安全传输相关推荐

  1. 前端JS RSA加密,PHP后端解密实现密码安全传输

    在设计用户注册登陆系统的时候,密码的安全传输一直是一个需要特别引起注意的地方,很多网站包括大型网站依然还是采用明文传输密码的方式,安全隐患需要注意.当然,为了防止第三人的恶意窃听,不少网站已经启用了H ...

  2. python后端开发框架加密_Flask框架实现的前端RSA加密与后端Python解密功能详解

    本文实例讲述了Flask框架实现的前端RSA加密与后端Python解密功能.分享给大家供大家参考,具体如下: 前言 在使用 Flask 开发用户登录API的时候,我之前都是明文传输 username ...

  3. python写网页前端交易rsa加密_Flask框架实现的前端RSA加密与后端Python解密功能详解!...

    本文实例讲述了Flask框架实现的前端RSA加密与后端Python解密功能.分享给大家供大家参考,具体如下: 前言 在使用 Flask 开发用户登录API的时候,我之前都是明文传输 username ...

  4. vue学习笔记-01-前端的发展历史(从后端到前端,再到前后端分离,再到全栈)

    vue学习笔记-01-前端的发展历史(从后端到前端,再到前后端分离,再到全栈)   这篇文章是博主在看vue-前端发展简史的时候做的笔记,以供后续学习复习 文章目录 vue学习笔记-01-前端的发展历 ...

  5. 企业付款到银行卡API,RSA加密总是报解密真实姓名或银行卡号出错?

    最近对接企业付款到银行卡的过程中,总是提示RSA加密总是报解密真实姓名或银行卡号出错 最后发现是为了通用在公钥加密私钥解密的代码中使用了非默认的OPENSSL_PKCS1_OAEP_PADDING填充 ...

  6. 基于RSA加密和Tkinter可视化的密码存储程序(可用于期末作业设计、Python练习、实用应用;抗错误输入、抗密码盗取)二:登录、注册界面

    此篇接上篇,有兴趣的可以去主页或专栏看看,没有的话咱直接开始: 基于RSA加密和Tkinter可视化的密码存储程序(可用于期末作业设计.Python练习.实用应用:抗错误输入.抗密码盗取)一:思路介绍 ...

  7. rsa加密前后端分段解密出现中文部分乱码解决方法

    问题图: 因为前端rsa 分段解密的时候汉字 字节代表3个字节,在解密最大长度分界如果3个字节被分隔成了两段转成string就会乱码了 解决办法:前端/java可以先用js自带的方法(encodeUR ...

  8. 前端(Vue)sha512加密、后端(Java)sha512加密后加盐实现完整流程

    搜索时发现sha512加密(加盐)的内容很少 所以过来添一块砖 文章目录 写在前面 一.理解一下SHA512加盐 二.前端项目实现SHA512加密 1.前端页面中引入js工具类 2.调用CryptoJ ...

  9. js输出php文件大小,前端js实现文件的断点续传 后端PHP文件接收

    早就听说过断点续传这种东西,前端也可以实现一下. 断点续传在前端的实现主要依赖着HTML5的新特性,所以一般来说在老旧浏览器上支持度是不高的 本文通过断点续传的简单例子(前端文件提交+后端PHP文件接 ...

  10. js增加属性_前端js基础2

    JavaScript ECMAScript(ES):规定了js的一些基础的核心知识(变量.数据类型.语法规范.操作语句等) 3/5==6/7 说出ES5和ES6的区别? DOM:document ob ...

最新文章

  1. mysql免安装教程
  2. Dockerfile的介绍
  3. JDK 监控和故障处理工具总结
  4. java.lang.NoSuchMethodException: tk.mybatis.mapper.provider.base.BaseSelectProvider.<init>()的问题解决
  5. SAP Spartacus category navigation按钮的差异
  6. mysql8.0 密码认证插件_只需使用VS Code的REST客户端插件即可进行API调用
  7. 大道至简第四章读后感
  8. shift-and(HDU 5972 2016ICPC大连 B: Regular Number)
  9. HDOJ-1201 18岁生日
  10. Lock和synchronized的区别和使用(转载)
  11. masm5安装教程_MASM 6.11的安装与设置
  12. oracle 高级dba,DAVE老师Oracle DBA高级运维深入解析实战班 高级DBA运维视频 Oracle视频教程...
  13. 水经注万能地图下载器、影像插件和转换器的功能与关系
  14. pdf加水印的方法,pdf如何加水印?
  15. Mac os X 常用技巧
  16. 如何提高用户逃离成本
  17. 曾国藩:统领30万湘军,只靠这4句话
  18. Mybatis源码解析——入门级
  19. 自动驾驶系列(二) - 路径规划五种算法简述及对比
  20. linux系统给安卓root权限,安卓手机该如何获取Root权限?方法很简单,但不建议Root...

热门文章

  1. 19所大陆高校上榜!2021泰晤士世界大学影响力排名发布
  2. CVPR2021 Oral|开放世界中的目标检测
  3. 介绍一篇路端传感器的cooperative perception(3D目标检测)论文
  4. 软件工程过程 - 期末复习
  5. 【测试篇】为什么需要测试
  6. 201521123070 《JAVA程序设计》第6周学习总结
  7. 总算完成了第一个项目,宿管系统,和感想
  8. 一个简单的空间配置器
  9. android开发之自定义AutoCompleteTextView
  10. 智能优化算法:金枪鱼群优化算法-附代码