加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

加盐密码哈希:如何正确使用

发布时间:2020-12-14 06:37:36 所属栏目:Java 来源:你可以提交一系列待破解的哈希值
导读:p style="border:0px; margin-top:0px; margin-bottom:20px; padding-top:0px; padding-bottom:0px; font-size:15px; color:rgb(46,46,46); font-family:'Microsoft YaHei',宋体,'Myriad Pro',Lato,'Helvetica Neue',Helvetica,Arial,sans-serif" 如果你是We

<p style="border:0px; margin-top:0px; margin-bottom:20px; padding-top:0px; padding-bottom:0px; font-size:15px; color:rgb(46,46,46); font-family:'Microsoft YaHei',宋体,'Myriad Pro',Lato,'Helvetica Neue',Helvetica,Arial,sans-serif">
如果你是Web开发者,你很可能需要开发一个用户账户系统。这个系统最重要的方面,就是怎样保护用户的密码。存放帐号的数据库经常成为入侵的目标,所以你必须做点什么来保护密码,以防网站被攻破时发生危险。最好的办法就是对密码进行<span style="border:0px; margin:0px; padding:0px">加盐哈希,这篇文章将介绍它是如何做到这点。


<p style="border:0px; margin-top:0px; margin-bottom:20px; padding-top:0px; padding-bottom:0px; font-size:15px; color:rgb(46,sans-serif">
在对密码进行哈希加密的问题上,人们有许多争论和误解,这大概是由于网络上广泛的误传吧。密码哈希是一件非常简单的事情,但是依然有很多人理解错误了。本文阐述的并不是进行密码哈希唯一正确的方法,但是会告诉你为什么这样是正确的。


<div style="border:0px; margin:0px; padding:0px; font-size:15px; color:rgb(46,sans-serif; background-color:rgb(255,204,204)">
<p style="border:0px; margin-top:0px; margin-bottom:20px; padding-top:0px; padding-bottom:0px">
<span style="border:0px; margin:0px; padding:0px">郑重警告:如果你在试图编写自己的密码哈希代码,<span style="border:0px; margin:0px; padding:0px">赶紧停下来!那太容易搞砸了。即使你受过密码学的高等教育,也应该听从这个警告。这是对所有人说的:<span style="border:0px; margin:0px; padding:0px">不要自己写加密函数!安全存储密码的难题现在已经被解决了,请使用<a target="_blank" title="http://www.openwall.com/phpass/" href="http://www.openwall.com/phpass/" rel="nofollow" style="border:0px; margin:0px; padding:0px; text-decoration:none; color:rgb(0,153,204)">phpass或者本文给出的一些源代码。


才能用于保护密码,例如SHA256,SHA512,RipeMD和WHIRLPOOL。


密码字典中的每个密码,然后把哈希值和对应的密码储存到一个用于快速查询的数据结构中。一个良好的查表实现可以每秒进行数百次哈希查询,即使表中储存了几十亿个哈希值。


:短盐值和盐值重复


:两次哈希和组合哈希函数




来生成。CSPRNG和普通的随机数生成器有很大不同,如C语言中的rand()函数。物如其名,CSPRNG专门被设计成用于加密,它能提供高度随机和无法预测的随机数。我们显然不希望自己的盐值被猜测到,所以一定要使用CSPRNG。下面的表格列出了当前主流编程语言中的CSPRNG方法:

  1. 加密哈希函数进行加密,如SHA256

HTTPS(SSL/TLS)。如果浏览器和服务器之间的连接是不安全的,那么中间人攻击可以修改JavaScript代码,删除加密函数,从而获取用户密码。

的技术。

,只有知道这个密钥的人才能校验密码。有两种办法可以实现:将哈希值加密,比如使用AES算法;将密钥包含到哈希字符串中,比如使用密钥哈希算法。


使用:

使用:

的令牌,它直接关联到用户的账户。然后将这个令牌混入一个重置密码的链接中,发送到用户的电子邮箱。最后当用户点击这个包含有效令牌的链接时,提示他们可以设置新的密码。要确保这个令牌只对一个账户有效,以防攻击者从邮箱获取到令牌后,用来重置其他用户的密码。



The hash of the password.
True if the password is correct. False otherwise.
True if both byte arrays are equal. False otherwise.
A hash of the password.

SIZE
SIZE
DELIMITER

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!