首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何用CRYPT_SHA512增加PHP的盐长?

如何用CRYPT_SHA512增加PHP的盐长?
EN

Stack Overflow用户
提问于 2016-05-14 04:11:08
回答 1查看 302关注 0票数 0
代码语言:javascript
运行
复制
<?php

  echo 'SHA-512:' . crypt('rasmuslerdorf', '$6$rounds=5000$usesomesillystringforsalt$');

输出: SHA-512: $6$rounds=5000$usesomesillystri$D4IrlXatmP7rx3P3InaxBeoomnAihCKRVQP22JZ6EY47Wc6BkroIuUUBOov1i.S5KPgErtP/EN5mcO.ChWQW21

它只使用16个字符的盐类:

参考文献: 加密-单向字符串散列

问题:

  • 能增加盐的长度吗?
  • 如果我们增加盐的长度,有什么缺点吗?

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-15 21:57:26

我马上想到了两个问题:

  1. 你为什么用CRYPT_SHA512而不是CRYPT_BLOWFISH
  2. 你为什么要用password_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年安全存储用户密码

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37222420

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档