简体   繁体   中英

Php 64bit integer hash

Is there a one way hashing algorithm, that can give an integer hash of 64 bits? Tried converting md5 hex into integer(storing large int using gmp library in PHP), but I'll lose precision. Same with SHA1.

Is there an existing algorithm (in php or otherwise), that will give a int or a hex which I can convert to an integer(max 64 bits).

There're plenty of algorithms , to convert them to an integer you can make use of the gmp extension:

$base16 = hash('md5', 'hello world');
$base10 = gmp_strval(gmp_init(strtoupper($base16), 16), 10);

Where $base16 is the hexadecimal digest returned by the hash function.

You can do print_r(hash_algos()); to see a list of all available PHP hash algorithms, and take your pick for one that suits your needs:

Array
(
    [0] => md2
    [1] => md4
    [2] => md5
    [3] => sha1
    [4] => sha224
    [5] => sha256
    [6] => sha384
    [7] => sha512
    [8] => ripemd128
    [9] => ripemd160
    [10] => ripemd256
    [11] => ripemd320
    [12] => whirlpool
    [13] => tiger128,3
    [14] => tiger160,3
    [15] => tiger192,3
    [16] => tiger128,4
    [17] => tiger160,4
    [18] => tiger192,4
    [19] => snefru
    [20] => snefru256
    [21] => gost
    [22] => adler32
    [23] => crc32
    [24] => crc32b
    [25] => salsa10
    [26] => salsa20
    [27] => haval128,3
    [28] => haval160,3
    [29] => haval192,3
    [30] => haval224,3
    [31] => haval256,3
    [32] => haval128,4
    [33] => haval160,4
    [34] => haval192,4
    [35] => haval224,4
    [36] => haval256,4
    [37] => haval128,5
    [38] => haval160,5
    [39] => haval192,5
    [40] => haval224,5
    [41] => haval256,5
)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM