php: Nummer nur Hash?

In PHP gibt es eine Möglichkeit, einen eindeutigen Hash aus einem String zu erstellen, aber dass der Hash nur aus Zahlen besteht?

Beispiel

return md5(234); // returns 098f6bcd4621d373cade4e832627b4f6

aber ich brauch

return numhash(234); // returns 00978902923102372190 
(20 numbers only)

as Problem hier ist, dass ich möchte, dass das Hashing kurz is

bearbeiten OK lass mich die Hintergrundgeschichte hier erklären. Ich habe eine Site, die eine ID für jede registrierte Person hat. Außerdem benötige ich eine ID für die Person, die verwendet und ausgetauscht werden soll (daher kann es nicht zu lang sein). Bisher lautete die ID-Nummer 00001, 00002, 00003 usw. ..

das bringt einige Leute dazu, wichtiger auszusehendies enthüllt Anwendungsinformationen, die ich nicht enthüllen möchte.

Um die Punkte 1 und 2 zu beheben, muss ich die Nummer "verstecken", ohne sie zu verändern.

Bearbeiten + LÖSUNG:

Numerische Hash-Funktion basierend auf dem Code vonhttps: //stackoverflow.com/a/23679870/17507

/**
 * 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

Antworten auf die Frage(14)

Ihre Antwort auf die Frage