php: número apenas hash?
No php, existe uma maneira de fornecer um hash exclusivo de uma string, mas que o hash foi composto apenas de números?
exemplo:
return md5(234); // returns 098f6bcd4621d373cade4e832627b4f6
mas eu preciso
return numhash(234); // returns 00978902923102372190
(20 numbers only)
o problema aqui é que eu quero que o hash seja curto.
editar: OK, deixe-me explicar a história por trás aqui. Eu tenho um site que tem um ID para cada pessoa registrada, também preciso de um ID para a pessoa usar e trocar (portanto, não pode ser muito longo), até agora a numeração do ID foi 00001, 00002, 00003 etc. ..
isso faz com que algumas pessoas pareçam mais importantesisso revela informações do aplicativo que eu não quero revelar.Para corrigir os pontos 1 e 2, preciso "ocultar" o número, mantendo-o único.
Editar + SOLUÇÃO:Função hash numérica baseada no código porhttps://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