<?php
echo 'SHA-512:' . crypt('rasmuslerdorf', '$6$rounds=5000$usesomesillystringforsalt$');输出: SHA-512: $6$rounds=5000$usesomesillystri$D4IrlXatmP7rx3P3InaxBeoomnAihCKRVQP22JZ6EY47Wc6BkroIuUUBOov1i.S5KPgErtP/EN5mcO.ChWQW21
它只使用16个字符的盐类:
参考文献: 加密-单向字符串散列
问题:
提前谢谢。
发布于 2016-05-15 21:57:26
我马上想到了两个问题:
CRYPT_SHA512而不是CRYPT_BLOWFISHpassword_hash()/password_verify()/password_needs_rehash()而不是crypt()您应该使用password_*而不是crypt()的原因之一是它会为您生成唯一的随机盐。如果你的目标是安全的话,你真的不想把你自己的盐发生器交出来。
能增加盐的长度吗?
SHA512Crypt只允许一个16个字符的盐.Bcrypt使用一个22字符的盐类(128位随机字符串的base64 64编码表示)。
让我们量化这一点:128位盐(由CSPRNG驱动)在生成2^64 ( 18,446,744,073,709,551,616)密码散列)后,将精确地重复一次(概率为50% )。
对于,地球上每一个活着的人,大约有26亿比特哈希。
你不需要更长的盐来获得任何可观的安全收益。
如果我们增加盐的长度,有什么缺点吗?
它将默默地截断,虽然你可能觉得聪明的似乎使用更长的盐,它将不会影响安全。
进一步阅读:如何在2016年安全存储用户密码。
https://stackoverflow.com/questions/37222420
复制相似问题