我的随机盐生成器有多安全

时间:2014-07-19 16:10:48

标签: php security passwords

我有以下PHP脚本:

<?php

    $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUV0123456789~`!@#$%^&*()_+=-[]{}:;/.,<>?";
    $salt = str_shuffle($chars);
    $salt = substr($salt, 0, 64);s
    echo $salt;

?>

有人能告诉我它有多安全吗?它不应该对暴力强制攻击是安全的,因为它会生成一个64个完全随机的字符串吗?但是,当我测试它时,95%的时间它会生成64个字符的字符串,但有时却没有。例如,它生成zk;~+1`9t4s7mg[e!JRPI(ob,它只是一个24个字符的字符串。另一次它生成了一个11个字符的字符串。谁能告诉我为什么会这样?

转向安全性,实际上有多安全?如果它不够/非常安全,请告诉我有哪些替代方案。

提前致谢

1 个答案:

答案 0 :(得分:1)

  

例如,它生成了zk;〜+ 1`9t4s7mg [e!JRPI(ob,它只是一个24个字符的字符串。另一次它生成了一个11个字符的字符串。有人可以告诉我为什么会这样吗?

可能不是。这只是因为使用<字符和浏览器认为该标记的开头。例如,如果您已生成字符串

!KyR<I)/$NPjfd-U*+vpmA9zh2;7#_}JSr(@tH4kFa:[?`l6TD~&w,8LOE5.3Qqc 

它会在浏览器中显示为!KyR但在源代码中您会看到整个字符串。 (如果要显示它,请使用htmlspecialchars()功能)

  

有人能告诉我它有多安全吗?

对我来说,问题是为什么不使用password_hash为给定密码自动创建盐?