문자열 해시를 찾고 있는데 출력이 정수가되어야 md5를 할 수 없습니다. 여기 사람들은 나에게 계몽하고 싶은 마음에 드는 숫자 해시를 가지고 있습니다. PHP를 사용하고 있습니다.좋은 숫자 해시
감사합니다.
문자열 해시를 찾고 있는데 출력이 정수가되어야 md5를 할 수 없습니다. 여기 사람들은 나에게 계몽하고 싶은 마음에 드는 숫자 해시를 가지고 있습니다. PHP를 사용하고 있습니다.좋은 숫자 해시
감사합니다.
은 어쩌면이 당신을 위해 충분 :
echo sprintf('%u', crc32($string));
편집 : 기타 유사한 대안, MD5의 출력은 단지 거의 상상할 수있는 모든 해시와 마찬가지로 숫자입니다
echo hash('adler32', $string);
. 이것은 보통 16 진수로 표현되는 숫자입니다. 편리하게 사용할 수있는 해시 알고리즘을 사용하고 끝에서 원하는만큼 많은 비트를 자르고 해당 비트를 숫자로 처리하십시오. 모든 좋은 해시는 전체 값만큼 균등하게 분산 된 마지막 (또는 첫 번째 또는 중간) n 비트를 갖습니다.
나는 이미 Stackoverflow에 좋은 해싱 및 PHP 관련 질문이 있다고 생각합니다.
여기에서 hashing
+php
search을 시도해보십시오.
짧은 목록
, Need a simple hash in PHP당신은 십진수로 그 반대의 진수를 변경하는 base_convert를 사용할 수 있습니다. 정수 (문자열)를 16 진수로 변환하려면 32 비트 숫자 이하로 제한하십시오 (PHP_INT_MAX). 내가 가진 가능한 해시의
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
이 내가 진수와 진수 사이의 변환을 할 수있는 사람은 다음과 같습니다
adler32
c1015d04
3238092036
c1015d04
yes
crc32
accf8b33
2899282739
accf8b33
yes
crc32b
d87f7e0c
3632233996
d87f7e0c
yes
당신은 좋은 보안 또는 좋은 키 분배에서와 같이 "좋은"해시를 의미합니까 ? 첫 번째는 보통 두 번째이지만 상대적으로 높은 비용으로 제공합니다. – RBarryYoung
다음 페이지는 효율적이고 최소한의 충돌을 보이는 범용 해시 함수의 여러 구현을 가지고 있습니다 : http://partow.net/programming/hashfunctions/index.html –