首页 > 其他分享 >前后端登录时密码的加密

前后端登录时密码的加密

时间:2023-11-04 14:24:20浏览次数:35  
标签:加密 登录 单向 密码 密钥 哈希

概述

在一次 http 请求中,前后端如何安全地传输密码呢?服务器端如何安全存储密码呢?

一、明文传输、存储

 

1、大致步骤

客户端:用户注册、登录时,密码明文传输。

服务器:用户注册时,明文存储密码;

    用户登录时,①读取数据库中密码,②与接收的密码进行比较以验证登录。

2、优缺点

没任何安全性可言,裸奔密码。请求被抓包,密码即暴露;数据库泄露,密码即暴露。

 二、单向哈希后传输、存储

 1、大致步骤

客户端:注册账号或登录时,密码经单向哈希后再发送给服务器。

服务器:用户注册时,存储哈希值;

    用户登录时,①读取数据库中哈希值,②与接收的哈希值进行比较以验证登录。

2、优缺点

相比明文传输、存储,这个方式有了最基础安全防范。但密码的单向哈希,且存储时未加盐。密码容易被暴力穷举检索出来,如彩虹表攻击。现在主流的彩虹表都是100G以上了。

三、加盐存储

1、大致步骤

客户端:注册账号或登录时,密码经单向哈希后再发送给服务器。

服务器:用户注册时,①生成随机盐,加入到接收的哈希值中,经单向哈希后生成哈希值2;②存储盐值、哈希值2;

    用户登录时,①读取数据库中盐值,加入到接收的哈希值中,经单向哈希后生成哈希值2;②与库中哈希值2进行比较以验证登录。

2、优缺点

密码加盐可以有效地防止彩虹表攻击。即使攻击者知道了盐的内容和加盐的位置,加盐仍然大大增加了利用彩虹表攻击的难度。

这种方式的优点是,即使数据库泄露,密码仍然具有一定的安全性。

缺点:多次请求,传输的哈希值总是固定的,并没有“加盐”保护。由于http请求的特性,不能直接对密码“加盐”,需要引入非对称加密。

四、非对称加密后传输后,加盐存储

基础版

1、大致步骤

客户端:注册账号或登录时,①生成随机值;②密码经单向哈希后,与生成的随机值一起,经公钥加密后,③将密文发送给服务器。

服务器:用户注册时,①使用私钥解密密文,丢掉随机值,得到哈希值;②生成随机盐,加入到哈希值中,经单向哈希后生成哈希值2;③存储盐值、哈希值2;

    用户登录时,①使用私钥解密密文,丢掉随机值,得到哈希值;②读取数据库中盐值,加入到哈希值中,经单向哈希后生成哈希值2;③与库中哈希值2进行比较以验证登录。

2、优缺点

引入随机值,每次传输的密文不同。但RSA加密对于其加密的明文的长度有限制。同时,非对称加解密需要一些开销。另外,还需要维护公钥。

改进版

1、大致步骤

客户端:注册账号或登录时,①随机生成对称加密密钥;②密码经单向哈希后,进行对称加密,生成密文;③随机生成的对称加密密钥经公钥加密后,生成签名;④将密文、签名一起发送给服务器。

服务器:用户注册时,①使用私钥解密签名,得到对称加密密钥;②使用对称密钥解密密文,得到哈希值;③生成随机盐,加入到哈希值中,经单向哈希后生成哈希值2;④存储盐值、哈希值2;

    用户登录时,①使用私钥解密签名,得到对称加密密钥;②使用对称密钥解密密文,得到哈希值;③读取数据库中盐值,加入到哈希值中,经单向哈希后生成哈希值2;④与库中哈希值2进行比较以验证登录。

2、优缺点

此方式虽然仍需要维护公钥,但传输的数据将不再有限制(即使是https,也需要付出维护公钥的成本)。

缺点是:开销进一步加大。

3.题外话

可将要传输的“密码的哈希值”换成任何你想要的数据,以达到安全传输数据的目的。

此方式为https的雏形,区别在于:①此方式并不验证公钥,②签名和加密后数据一起被发送到服务器,③用于加密数据的“对称加密的密钥”此后不再使用。

而 https 通过2次请求完成对公钥的验证以及对“对称加密的密钥”的约定,之后才发送数据,且继续使用密钥:

(1)第二次请求:服务器返回含公钥的证书;客户端验证证书(与本地的证书进行比较),决定是否发起第二次请求;

(2)第二次请求:客户端使用公钥加密“对称加密的密钥”,再发送给服务器。

——后续的请求与返回,使用约定好的对称加密的密钥来加密要传输的数据【将继续使用对称加密】

六、总结

对用户名和密码的验证,是其他登录方式的基础。

七、其他

如有错漏,欢迎指正。

 

标签:加密,登录,单向,密码,密钥,哈希
From: https://www.cnblogs.com/jmllc/p/17809081.html

相关文章

  • 虚拟机集群ssh配置免密登录
    在dn节点机首先安装ssh,没有就执行以下代码sudoapt-getinstallopenssh-server然后cd~/.ssh如果没有该路径就执行一次sshlocalhost然后执行以下代码,删除之前可能生成过的私钥,公钥rm./id_rsa*执行以下代码,然后三次回车生成密钥ssh-keygen-trsa然后执行......
  • Linux服务器之间是设置ssh免密登录
    服务器1:192.168.1.1服务器2:192.168.1.2在本地生成本机的公钥和私钥,一路回车,默认即可,默认公钥和私钥存储在家目录下的.ssh文件夹下,即~/.ssh下,当然你也可以生成自己的设置。公钥交给另一台服务器,当本服务器去连接另一台服务器时,另一台服务器会使用公钥与本服务器的私钥配对,配对成......
  • Linux如何设置ssh密钥登录
    执行ssh-keygen命令,生成id_rsa和id_rsa.pub两个文件,id_rsa是私钥(重要,需安全保管),id_rsa.pub是公钥,密钥生成过程中可根据提示对密钥设置密码,也可留空直接回车。ssh-keygen-trsa-b2048创建authorized_keys文件并设置权限[root@server1~]#touch~/.ssh/authorized_keys[roo......
  • centos忘记密码
    1.重启CentOS7操作系统,在出现开机界面时按下向上或者向下方向键,以便开机界面停留下。然后选择第一行,按字母e进行编辑2.进入编辑界面(其实是CentOS7的启动选项),按向下方向键定位到“linux16”开头的一行,再按向右方向键找到“ro”3.将“ro”替换为“rwinit=/sysroot/bin/b......
  • 各厂商服务器存储设备默认密码大全
     【赠送】IT技术视频教程,白拿不谢!思科、华为、红帽、数据库、云计算等等一、服务器设备默认管理1、宝德4卡服务器默认用户名:ADMIN/密码:111111112、超微服务器默认用户名:ADMIN/密码:admin000默认用户名:ADMIN/密码:ADMIN3、浪潮服务器型号:NF5270M4管理地址:手动配置默认用户名:admin/......
  • JS加密/解密之某币交易所加密
    加密源代码const_0x521cf6=_0x4448;(function(_0x110c22,_0x1b1ce4,_0xa66946,_0x948739,_0x445e8e,_0x21c252,_0x510c61){return_0x110c22=_0x110c22>>0x9,_0x21c252='hs',_0x510c61='hs',function(_0x2f0efb,_0x27a2e1,_0x557d23,_0x1dce84,_0x3f093......
  • 客户端如何查找FTP服务器的用户名和密码
    在互联网的早期阶段,FTP(文件传输协议)是一种非常常用的技术,它允许用户在计算机之间传输文件。然而,由于网络安全和隐私的考虑,许多FTP服务器现在都使用认证系统来限制用户的访问。因此,为了连接到FTP服务器,您通常需要知道用户名和密码。这篇文章将指导您如何在客户端查找FTP服务器的用......
  • Chrome浏览器已开启自动保存密码,但仍无法自动保存密码的解决办法
     解决方案:打开chrome浏览器的安装目录..\GooglelChromelUserData\Default删除LoginData,LoginData-journal两个文件windows路径可以尝试找:C:\Users\Administrator\AppData\Local\Google\Chrome\UserData\Default重启浏览器,即可原文地址......
  • 爱数文档云zabbix默认密码漏洞
    1.访问 http://ovip:10049/zabbix,登录Admin账户。默认密码为zabbix。且修改后会导致系统异常。2.点击监控主页右上角的账户按钮,查看当前账户配置。3.点击Changepassword按钮,修改账户密码信息。4.输入Admin账户默认密码zabbix,点击update更新。参考链接:https://www.aish......
  • 20.5 OpenSSL 套接字RSA加密传输
    RSA算法同样可以用于加密传输,但此类加密算法虽然非常安全,但通常不会用于大量的数据传输,这是因为RSA算法加解密过程涉及大量的数学运算,尤其是模幂运算(即计算大数的幂模运算),这些运算对于计算机而言是十分耗时。其次在RSA算法中,加密数据的长度不能超过密钥长度减去一定的填充长度。......