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