我有以下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个字符的字符串。谁能告诉我为什么会这样?
转向安全性,实际上有多安全?如果它不够/非常安全,请告诉我有哪些替代方案。
提前致谢
答案 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为给定密码自动创建盐?