Z
Published on
· Last modified on
· Public

如何安全的存储密码

Use PBKDF2,Use PBKDF2,Use PBKDF2,Use PBKDF2,Use PBKDF2.

不要直接使用 md5,sha256

我买了一块不到 1000 人民币的 nvidia 显卡,写了个暴力破解 md5 的程序,每秒可以计算 10亿 个结果,对于只有5个字符长度的密码,无论加不加盐,1s 就能找到明文密码。sha256 同理。

不要使用 bcrypt,scrypt

bcrypt,scrypt 比 md5,sha256 要好一些,但有个问题是,难度无法调整。根据摩尔定律,计算速度是指数增加。

PBKDF2 有多安全?

PBKDF2 并不安全,PBKDF2 比直接使用 md5,sha256 有个优势,它的难度是可以动态调整的(理想情况下)。可以在一个指定的周期,在用户登录之后将难度增加。

用户怎么办?

几个安全点:

  1. 不要重复使用密码。
  2. 密码长度要超过16位。
  3. 不要使用第三方服务存储密码,比如 iCloud,比如 1Password 。
  4. 在能够使用二次认证的网站上,开启二次认证。比如使用短信或Google Authenticator 。

如果无法完全做到,能够做到 1,4 就可以。 推荐使用 PasswordSafe 管理密码。开源软件,不是广告。。。

Update:

根据评论,我对 bcrypt,scrypt 理解有误,算法可以调整难度。 那么算法选择上,如果需要计算代价较小使用 PBKDF2 ,如果计算代价不是重点使用 bcrypt,scrypt 也可。 感谢 @duyue 指出。

D
Published on

bcrypt 和 PBKDF2 一样可以调整 work factor

T
Published on

学习了... N卡这么屌...

J
Published on

您好。

我们是JointForce杰微刊。致力于为国内IT同胞贡献有价值的内容。

这是我们之前组织翻译的文章:

Quora是如何维持高质量代码的(http://www.jointforce.com/jfperiodical/article/942)。

不知您是否有意?

感谢您抽时间阅读。

Z
Published on
jiewei:

您好。

我们是JointForce杰微刊。致力于为国内IT同胞贡献有价值的内容。

这是我们之前组织翻译的文章:

Quora是如何维持高质量代码的(http://www.jointforce.com/jfperiodical/article/942)。

不知您是否有意?

感谢您抽时间阅读。

你好,我的文章是允许转载的,但转载是必须标出地址和作者。网站的其他作者的文章,请单独咨询作者。

J
Published on
zhicheng:
jiewei:

您好。

我们是JointForce杰微刊。致力于为国内IT同胞贡献有价值的内容。

这是我们之前组织翻译的文章:

Quora是如何维持高质量代码的(http://www.jointforce.com/jfperiodical/article/942)。

不知您是否有意?

感谢您抽时间阅读。

你好,我的文章是允许转载的,但转载是必须标出地址和作者。网站的其他作者的文章,请单独咨询作者。

谢谢您,以后有合作意向您可以随时联系我们

J
Published on
zhicheng:
jiewei:

您好。

我们是JointForce杰微刊。致力于为国内IT同胞贡献有价值的内容。

这是我们之前组织翻译的文章:

Quora是如何维持高质量代码的(http://www.jointforce.com/jfperiodical/article/942)。

不知您是否有意?

感谢您抽时间阅读。

你好,我的文章是允许转载的,但转载是必须标出地址和作者。网站的其他作者的文章,请单独咨询作者。

zhicheng,您好,您方便提供您的邮箱吗?我把咱们这边的具体情况,发个邮件给您。

Z
Published on

@jiewei zhicheng (at) opensourceforge.net

A
Published on

楼主说的 1s 破解应该是  盐(salt)已知的情况下吧 ? 

Z
Published on
AJLoveChina:

楼主说的 1s 破解应该是  盐(salt)已知的情况下吧 ? 

对,一般的数据库设计密码 hash 和 salt 应该都是保存在同一个表上的。

B
Published on

的确md5 sha1 能反向解密,但是如果加盐就好几位 不同的标点符号,在用户那里限制一下 密码不能低于6位,这样密码应该是 十几位的吧 短期无法解密, 但大多数网站都是md5 还有的是明文,如果自己能写底层加密函数会更安全些

Z
Published on
baoshu:

的确md5 sha1 能反向解密,但是如果加盐就好几位 不同的标点符号,在用户那里限制一下 密码不能低于6位,这样密码应该是 十几位的吧 短期无法解密, 但大多数网站都是md5 还有的是明文,如果自己能写底层加密函数会更安全些

计算难度可以调整是比较关键的一点。

Sign in or Sign up Leave Comment