İyi sayısal sağlamalarının

4 Cevap php

Ben bir dize karma için arıyorum ama md5 yapamam ben bir tamsayı olması gerekir çıktı. Burada insanlar ile beni aydınlatmak isteyebilirsiniz herhangi bir favori sayısal karmaları var. Ben PHP kullanıyorum.

Teşekkürler!

4 Cevap

MD5 çıktısı sadece hemen hemen akla gelebilecek her karma gibi, bir sayıdır. Genellikle altıgen ifade ediyor sadece bir sayı. Eğer sonu kapalı istediğiniz kadar çok bit doğrayın, ve bir sayı olarak bu bit tedavisi, sizin için uygun mevcut olan herhangi bir karma algoritma kullanın. Herhangi bir good karma gibi eşit bütün değer olarak dağıtılan, son (ya da ilk veya orta) n bit olacaktır.

Belki bu sizin için yeterince iyidir:

echo sprintf('%u', crc32($string));

EDIT: Diğer benzer alternatif,

echo hash('adler32', $string);

Sen ondalık sayı ve tersi içine onaltılık değiştirmek için base_convert kullanabilirsiniz. Eğer 32 bit sayı veya daha az sınırlıdır hex (bir dizge olarak) tamsayılar dönüştürmek isterseniz ben (PHP_INT_MAX'tan) inanıyoruz.

php -r 'foreach (hash_algos() as $hash) { echo $hash, "\n", $a = hash($hash, "test"), "\n", $b = base_convert($a, 16, 10), "\n", $c = base_convert($b, 10, 16), "\n", ($c === $a ? "yes" : "no"), "\n\n"; }' > hashes.txt

Ben mevcut sağlamalarının, bu ben onluk ve onaltılık arasında dönüştürebilirsiniz olanlar:

adler32
c1015d04
3238092036
c1015d04
yes

crc32
accf8b33
2899282739
accf8b33
yes

crc32b
d87f7e0c
3632233996
d87f7e0c
yes