php:仅数字哈希?
在php中,有没有办法从字符串中给出唯一的哈希值,但是哈希值仅由数字组成?
例:
return md5(234); // returns 098f6bcd4621d373cade4e832627b4f6
但我需要
return numhash(234); // returns 00978902923102372190
(20 numbers only)
这里的问题是我希望哈希是短的。
编辑:好吧,让我在这里解释一下背景故事。我有一个网站,每个注册的人都有一个ID,我还需要一个ID供该人使用和交换(因此它不能太长),到目前为止,ID编号一直是00001,00002,00003等...
- 这让一些人看起来更重要
- 这揭示了我不想透露的应用程序信息。
要修复点1和2,我需要“隐藏”数字,同时保持其唯一性。
编辑 + 解决方案:
基于 https://stackoverflow.com/a/23679870/175071 代码的数字哈希函数
/**
* Return a number only hash
* https://stackoverflow.com/a/23679870/175071
* @param $str
* @param null $len
* @return number
*/
public function numHash($str, $len=null)
{
$binhash = md5($str, true);
$numhash = unpack('N2', $binhash);
$hash = $numhash[1] . $numhash[2];
if($len && is_int($len)) {
$hash = substr($hash, 0, $len);
}
return $hash;
}
// Usage
numHash(234, 20); // always returns 6814430791721596451