Bcrypt用于散列或加密吗?有点混乱

时间:2012-01-27 15:36:52

标签: security encryption hash blowfish bcrypt

我一直在阅读bcrypt(应用程序视角)。考虑使用它来存储我的网站上的密码。

我读到的一些东西中提出了两种方式:

  
      
  • e.g。 1:Bcrypt是bcrypt
  • 的跨平台文件加密实用程序   
  • e.g。 2:bcrypt是一种自适应密码散列算法,它使用Blowfish密钥调度,而不是对称加密算法。来自How To Safely Store A Password
  •   
  • bcrypt是由Niels Provos和DavidMazières设计的密码的自适应加密哈希函数,基于Blowfish密码:来自bcrypt wiki
  •   

Bcrypt究竟是什么?

3 个答案:

答案 0 :(得分:19)

两者都是:)

大多数时候,当人们提到BCrypt时,他们谈的是adaptive hash algorithm,但它也是unrelated file encryption utility的名称。

两者都基于Blowfish密码。

答案 1 :(得分:8)

Bcrypt加密软件使用Bruce Schneier在1993年设计的Blowfish算法。[1]

bcrypt哈希函数只是一个哈希函数。它不执行加密,它哈希。它基于Blowfish密码,被认为是一件好事,因为你可以make it slower over time

来自维基百科:

  

这在加密方面并不比标准强   Blowfish关键时间表,但更换轮次数是   配置;因此,可以任意地进行散列处理   慢,这有助于阻止暴力或盐的暴力攻击。

关于在您的网站上存储密码,您应该在对密码进行哈希处理之前加密密码。

只有在使用某种加密算法(例如Blowfish,Rijndael / AES)对其进行加密后,才应使用bcrypt对加密密码进行哈希处理,并存储密码哈希

有关实施密码安全性的更多详细信息,请参阅this question的最佳答案。

答案 2 :(得分:3)

bcrypt是密码的密钥派生函数

散列(由 bcrypt 使用)和简单单词加密之间的区别也是 -

1)加密数据可以通过私钥解密。 2)散列是一种方式,如果你将纯文本散列为不可逆转的,因此更安全。确保唯一的方法是重新整理纯文本,并将其与先前散列的数据进行比较以确保相等。