php sha512 漏洞,在PHP中正确使用带有SHA512的crypt()

在线的所有示例都显示了如下所示的crypt的使用:

$pass = crypt('something','$6$rounds=5000$anexamplestringforsalt$');

但是每个人都说你不应该定义轮次或盐.

那我该怎么用呢?

另外我遇到了一个问题:当我运行上面的代码时,它只运行50轮而不是5000轮,就像系统停止它一样.

任何帮助将不胜感激.

// – 解决方案 – //

我发现其中一些有用:

用于生成盐:

$salt = substr(str_shuffle("./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz012345‌​6789"), 0, 8);

要么

如果你有一个linux服务器,这是一种更随机的生成盐的方法

$fp = fopen('/dev/urandom', 'r');

$randomString = fread($fp, 32);

fclose($fp);

Base 64编码以确保某些字符不会导致crypt出现问题

$salt = base64_encode($randomString);

对于哈希:

$hashed = crypt($passwordInput, '$6$'.$salt);

确认:

if (crypt($passwordInput, $hashed) == $hashed) {

// Valid action

} else {

// Invalid action

}

**特别感谢@lathspell帮助我们解决上述问题**

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值