人脸识别能判断政治立场?
通过观察以上结果,我们发现原始密码一致,但使用的盐值不一样,最终生成的 MD5 哈希值差异也比较大。此外为了提高破解的难度,我们可以随机生成盐值并且提高盐值的长度。 6.3 bcrypt 哈希加盐的方式确实能够增加攻击者的成本,但是今天来看还远远不够,我们需要一种更加安全的方式来存储用户的密码,这也就是今天被广泛使用的 bcrypt。 bcrypt 是一个由 Niels Provos 以及 David Mazières 根据 Blowfish 加密算法所设计的密码散列函数,于 1999 年在 USENIX 中展示。bcrypt 这一算法就是为哈希密码而专门设计的,所以它是一个执行相对较慢的算法,这也就能够减少攻击者每秒能够处理的密码数量,从而避免攻击者的字典攻击。实现中 bcrypt 会使用一个加盐的流程以防御彩虹表攻击,同时 bcrypt 还是适应性函数,它可以借由增加迭代之次数来抵御日益增进的电脑运算能力透过暴力法破解。 由 bcrypt 加密的文件可在所有支持的操作系统和处理器上进行转移。它的口令必须是 8 至 56 个字符,并将在内部被转化为 448 位的密钥。然而,所提供的所有字符都具有十分重要的意义。密码越强大,您的数据就越安全。
下面我们以 Node.js 平台的 bcryptjs 为例,介绍一下如何使用 bcrypt 算法来处理用户的密码。首先我们需要先安装 bcryptjs: 因为 123456789 是很常见的密码,因此该网站能够反向得出正确结果那就不足为奇了。以下是 cmd5 网站的站点说明,大家可以参考一下,感兴趣的小伙伴可以亲自验证一下。 现在我们已经知道如果用户的密码相同 MD5 的值就会一样,通过一些 MD5 密文的反向查询网站,密码大概率会被解析出来,这样使用相同密码的用户就会受到影响。那么该问题如何解决呢?答案是密码加盐。 6.2 密码加盐 盐(Salt),在密码学中,是指在散列之前将散列内容(例如:密码)的任意固定位置插入特定的字符串。这个在散列中加入字符串的方式称为 “加盐”。其作用是让加盐后的散列结果和没有加盐的结果不相同,在不同的应用情景中,这个处理可以增加额外的安全性。 在大部分情况,盐是不需要保密的。盐可以是随机产生的字符串,其插入的位置可以也是随意而定。如果这个散列结果在将来需要进行验证(例如:验证用户输入的密码),则需要将已使用的盐记录下来。为了便于理解,我们来举个简单的示例。
6.2.1 Node.js MD5 加盐示例 tomcat中是如何处理这个请求流程的:
(编辑:衡水站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |