PHP函数创建8个字符长哈希([az] =不允许数字)

chu*_*byk 7 php hash

我需要PHP函数,它将从任何输入字符串创建8个字符长[az]哈希.因此,例如,当我提交"Stack Overflow"时,它将返回例如"gdqreaxc"(8个字符[az]不允许数字)

Luc*_*man 11

也许是这样的:

$hash = substr(strtolower(preg_replace('/[0-9_\/]+/','',base64_encode(sha1($input)))),0,8);
Run Code Online (Sandbox Code Playgroud)

这会生成一个SHA1哈希值,base-64对它进行编码(给我们提供完整的字母表),删除非alpha字符,对其进行小写并截断它.

用于$input = 'yar!';:

mwinzewn

用于$input = 'yar!!';:

yzzhzwjj

所以传播似乎很好.

  • 你真让我害怕并让我很好奇,所以我进行了10,000,000次迭代的测试.我无法得到任何低于8的长度.它产生3长度低于40. (5认同)
  • 如果base64表示恰好由(几乎)完全数字组成,那么看起来很可能你会得到一个长度小于8个字符串的字符串. (2认同)
  • 这是我没有考虑过的有效问题.虽然平均而言,基本64位编码字符串的81.25%将是alpha.在来自SHA1哈希的56字节base-64字符串中,平均为45.5个alpha字符.低于8可能是平均值的几个SD. (2认同)