Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PHP - Generate an 8 character hash from an integer

Is there a way to take any number, from say, 1 to 40000 and generate an 8 character hash?

I was thinking of using base_convert but couldn't figure out a way to force it to be an 8 character hash.

Any help would be appreciated!

like image 727
doc Avatar asked Mar 26 '10 02:03

doc


2 Answers

Why don't you just run md5 and take the first 8 characters?

Because you are wanting a hash, it doesn't matter whether portions are discarded, but rather that the same input will produce the same hash.

$hash = substr(md5($num), 0, 8);
like image 150
Nathan Osman Avatar answered Sep 30 '22 11:09

Nathan Osman


>>> math.exp(math.log(40000)/8)
3.7606030930863934

Therefore you need 4 digit-symbols to produce a 8-character hash from 40000:

sprintf("%08s", base_convert($n, 10, 4))
like image 43
Ignacio Vazquez-Abrams Avatar answered Sep 30 '22 09:09

Ignacio Vazquez-Abrams