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

为什么PHP crypt()将盐加入哈希?

发布时间:2020-12-13 17:29:34 所属栏目:PHP教程 来源:网络整理
导读:我正在研究建立一个登录系统,并且读取php手册后,当你传递一个2位数的盐到crypt()函数它返回一个哈希字符串,字符串的前2位数字是你使用的盐. 例: $salt = "kr";echo crypt("mysecret",$salt); //returns "kreOI.F7eOQMY" 我的第一个想法是,这不会帮助一个试
我正在研究建立一个登录系统,并且读取php手册后,当你传递一个2位数的盐到crypt()函数它返回一个哈希字符串,字符串的前2位数字是你使用的盐.

例:

$salt = "kr";
echo crypt("mysecret",$salt); //returns "kreOI.F7eOQMY"

我的第一个想法是,这不会帮助一个试图扭转你的哈希的人吗?

我在维基百科上查找了salt,说:

For best security,the salt value is kept secret.

所以我不明白为什么这个crypt函数会返回所有的哈希前缀,使用的盐值?

有没有理由呢?这应该是安全问题吗?

crypt()函数已经过时了.在使用影子密码支持之前,它用于为旧式Unix系统提供哈希密码.盐在那里增加了暴力强制密码的复杂性.然而,由于盐由密码子系统随机生成,所以必须以清晰的方式存储,所以将来的密码操作将会起作用.如果在密封之前将盐嵌入密码,则没有实际的方法来验证密码 – 每当密码检查完成时,您都必须尝试每一个可能的盐 – 非常不切实际.所以,盐被加密的密码,所以你可以再次拉出来以备将来使用.
crypted password: xxabcdefghijklmn
                  ^^- salt
                    ^^^^^^^^^^^^^^-- crypted pw

if ('xx' + crypt('xx' + password) == 'crypted string') then
     password is ok
endif

这几天,crypt()是谷物盒子解码器环的安全等价物.出于历史目的,低安全性“谁关心如果它被破解”存储.对于任何现代密码使用,您将更加喜欢更现代的哈希,如sha1 / sha256 / md5.甚至md5这几天被认为是破碎的,sha1边缘有裂缝,(最后我检查过)sha256还是安全的.

(编辑:李大同)

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

    推荐文章
      热点阅读