비 암호화 사용을위한 가장 빠른 해시?


154

필자는 데이터베이스에 넣을 문구를 본질적으로 준비하고 있는데, 형식이 잘못되어 짧은 해시를 대신 저장하고 싶습니다 (단지 존재하는지 여부를 간단히 비교하므로 해시가 이상적입니다).

MD5가 100,000 + 요청에서 상당히 느리다고 가정하므로 문구를 해시하는 가장 좋은 방법이 무엇인지 알고 싶었습니다. 내 자신의 해시 함수를 롤아웃하거나 사용하는 hash('md4', '...'것이 더 빠를 것입니까?

MySQL에는 MD5 ()가 있으므로 쿼리 끝에 약간의 속도를 보완하지만 MySQL에는 더 빠른 해싱 함수가 더있을 수 있습니다.


6
해시 벤치마킹을 방해하는 이유는 무엇입니까?
NullUserException

3
NullUserException : 네 말이 맞습니다. 임의의 길이의 문구로 시도해 보겠습니다. 이런 종류의 일을 처리하기 위해 표준이 무엇인지에 대한 통찰력을 원했습니다.
John

5
MD5는 그렇게 느리지 않습니다 ...
Amber

25
해싱 함수가 전체 응용 프로그램의 병목 현상인지 확인 하시겠습니까? 의심합니다
당신의 상식

4
이것은 매우 좋은 질문이며, 암시하지 않거나 중요하지 않다는 것을 암시하는 의견은 명백하고 직관적이어야합니다. 실망스럽고 실망 스럽습니다. (그리고 예상치 못한 것도 아닙니다.)
michael

답변:


56

CRC32는 매우 빠르며 이에 대한 기능이 있습니다 : http://www.php.net/manual/en/function.crc32.php

그러나 CRC32는 길이가 짧기 때문에 (128 비트와 각각 160 비트와 비교하여 32 비트) MD5 또는 SHA-1 해시보다 충돌이 더 크다는 점에 유의해야합니다. 그러나 저장된 문자열이 손상되었는지 확인하려면 CRC32를 사용하는 것이 좋습니다.


1
와우, 필요한 데이터 유형 만 부호없는 정수이며 다른 해싱보다 훨씬 빠릅니다.
John

2
@ 존 : 그렇지 않다. CRC32는 ARM 프로세서에서 MD4보다 느리고 MD5보다 빠르지 않은 것으로 나타났습니다 . 게다가, CRC32는 부호없는 32 비트 정수 타입을 사용하는데 이것은 MD5에 필요한 모든 것입니다.
Thomas Pornin

3
최신 인텔 CPU의 이점 / 고급 기능이있는 경우 crc32c 어셈블리 명령이 있습니다. xxhash code.google.com/p/xxhash
rogerdpack

146
fcn     time  generated hash
crc32:  0.03163  798740135
md5:    0.0731   0dbab6d0c841278d33be207f14eeab8b
sha1:   0.07331  417a9e5c9ac7c52e32727cfd25da99eca9339a80
xor:    0.65218  119
xor2:   0.29301  134217728
add:    0.57841  1105

그리고 이것을 생성하는 데 사용되는 코드는 다음과 같습니다.

 $loops = 100000;
 $str = "ana are mere";

 echo "<pre>";

 $tss = microtime(true);
 for($i=0; $i<$loops; $i++){
  $x = crc32($str);
 }
 $tse = microtime(true);
 echo "\ncrc32: \t" . round($tse-$tss, 5) . " \t" . $x;

 $tss = microtime(true);
 for($i=0; $i<$loops; $i++){
  $x = md5($str);
 }
 $tse = microtime(true);
 echo "\nmd5: \t".round($tse-$tss, 5) . " \t" . $x;

 $tss = microtime(true);
 for($i=0; $i<$loops; $i++){
  $x = sha1($str);
 }
 $tse = microtime(true);
 echo "\nsha1: \t".round($tse-$tss, 5) . " \t" . $x;

 $tss = microtime(true);
 for($i=0; $i<$loops; $i++){
  $l = strlen($str);
  $x = 0x77;
  for($j=0;$j<$l;$j++){
   $x = $x xor ord($str[$j]);
  }
 }
 $tse = microtime(true);
 echo "\nxor: \t".round($tse-$tss, 5) . " \t" . $x;

 $tss = microtime(true);
 for($i=0; $i<$loops; $i++){
  $l = strlen($str);
  $x = 0x08;
  for($j=0;$j<$l;$j++){
   $x = ($x<<2) xor $str[$j];
  }
 }
 $tse = microtime(true);
 echo "\nxor2: \t".round($tse-$tss, 5) . " \t" . $x;

 $tss = microtime(true);
 for($i=0; $i<$loops; $i++){
  $l = strlen($str);
  $x = 0;
  for($j=0;$j<$l;$j++){
   $x = $x + ord($str[$j]);
  }
 }
 $tse = microtime(true);
 echo "\nadd: \t".round($tse-$tss, 5) . " \t" . $x;

3
아, 실제로이 통찰력에 감사드립니다 .CRC32 사용이 가장 빠릅니다.
John

@John-다음을 사용하여 해싱 알고리즘을 검색 할 수 있습니다 hash_algos().. 다음 해시 벤치마킹 코드> == PHP는 의견이었다 codepad.viper-7.com/5Wdhw6
피터 Ajtai

코드 감사합니다. 조금 개선했습니다. 나는 우리가 전체 문자열을 처리하는 md5 ()와 xor로 만든 바이트 단위로 루프를 처리하는 함수를 비교해야한다고 생각하지 않습니다. PHP에서 이러한 루프는 매우 느리고 md5 자체보다 느립니다. 우리는 하나의 hases를 다른 함수와 비교해야하며 모두 함수로 구현되어야합니다.
Maxim Masiutin

1
간단한 참고 사항-훨씬 긴 문자열 (최대 5000 자) 로이 작업을 시도했으며 CRC32는 내 컴퓨터의 MD5 및 SHA1 (i7-6650U, 16GB)보다 느 렸습니다. CRC32-1.7s, MD5-1.4s, SHA1-1.5s. 항상 자신을 테스트하십시오.
Sam Tolton

4
@Quamis 테스트는 훌륭하지만 오해의 소지가 있습니다. @samTolton은 결과가 다르고 md5더 빠르다고 지적했습니다 . 더 나은 테스트는 문자열 내용과 길이를 무작위 화하는 것입니다. 이런 식으로 우리는 실제 실제 성능에 대해 더 나은 아이디어를 얻습니다. 캐싱도 피할 수 있습니다. 살펴보기 : PHP 해싱 체크섬 성능
Shlomi Hassid

43

각 루프가 다른 모든 루프와 동일한 것을 공유하는 순위 목록.

<?php

set_time_limit(720);

$begin = startTime();
$scores = array();


foreach(hash_algos() as $algo) {
    $scores[$algo] = 0;
}

for($i=0;$i<10000;$i++) {
    $number = rand()*100000000000000;
    $string = randomString(500);

    foreach(hash_algos() as $algo) {
        $start = startTime();

        hash($algo, $number); //Number
        hash($algo, $string); //String

        $end = endTime($start);

        $scores[$algo] += $end;
    }   
}


asort($scores);

$i=1;
foreach($scores as $alg => $time) {
    print $i.' - '.$alg.' '.$time.'<br />';
    $i++;
}

echo "Entire page took ".endTime($begin).' seconds<br />';

echo "<br /><br /><h2>Hashes Compared</h2>";

foreach($scores as $alg => $time) {
    print $i.' - '.$alg.' '.hash($alg,$string).'<br />';
    $i++;
}

function startTime() {
   $mtime = microtime(); 
   $mtime = explode(" ",$mtime); 
   $mtime = $mtime[1] + $mtime[0]; 
   return $mtime;   
}

function endTime($starttime) {
   $mtime = microtime(); 
   $mtime = explode(" ",$mtime); 
   $mtime = $mtime[1] + $mtime[0]; 
   $endtime = $mtime; 
   return $totaltime = ($endtime - $starttime); 
}

function randomString($length) {
    $characters = '0123456789abcdefghijklmnopqrstuvwxyz';
    $string = '';    
    for ($p = 0; $p < $length; $p++) {
        $string .= $characters[mt_rand(0, strlen($characters) - 1)];
    }
    return $string;
}

?>

그리고 출력

1 - crc32b 0.111036300659
2 - crc32 0.112048864365
3 - md4 0.120795726776
4 - md5 0.138875722885
5 - sha1 0.146368741989
6 - adler32 0.15501332283
7 - tiger192,3 0.177447080612
8 - tiger160,3 0.179498195648
9 - tiger128,3 0.184012889862
10 - ripemd128 0.184052705765
11 - ripemd256 0.185411214828
12 - salsa20 0.198500156403
13 - salsa10 0.204956293106
14 - haval160,3 0.206098556519
15 - haval256,3 0.206891775131
16 - haval224,3 0.206954240799
17 - ripemd160 0.207638263702
18 - tiger192,4 0.208125829697
19 - tiger160,4 0.208438634872
20 - tiger128,4 0.209359407425
21 - haval128,3 0.210256814957
22 - sha256 0.212738037109
23 - ripemd320 0.215386390686
24 - haval192,3 0.215610980988
25 - sha224 0.218329429626
26 - haval192,4 0.256464719772
27 - haval160,4 0.256565093994
28 - haval128,4 0.257113456726
29 - haval224,4 0.258928537369
30 - haval256,4 0.259262084961
31 - haval192,5 0.288433790207
32 - haval160,5 0.290239810944
33 - haval256,5 0.291721343994
34 - haval224,5 0.294484138489
35 - haval128,5 0.300224781036
36 - sha384 0.352449893951
37 - sha512 0.354603528976
38 - gost 0.392376661301
39 - whirlpool 0.629067659378
40 - snefru256 0.829529047012
41 - snefru 0.833986997604
42 - md2 1.80192279816
Entire page took 22.755341053 seconds


Hashes Compared

1 - crc32b 761331d7
2 - crc32 7e8c6d34
3 - md4 1bc8785de173e77ef28a24bd525beb68
4 - md5 9f9cfa3b5b339773b8d6dd77bbe931dd
5 - sha1 ca2bd798e47eab85655f0ce03fa46b2e6e20a31f
6 - adler32 f5f2aefc
7 - tiger192,3 d11b7615af06779259b29446948389c31d896dee25edfc50
8 - tiger160,3 d11b7615af06779259b29446948389c31d896dee
9 - tiger128,3 d11b7615af06779259b29446948389c3
10 - ripemd128 5f221a4574a072bc71518d150ae907c8
11 - ripemd256 bc89cd79f4e70b73fbb4faaf47a3caf263baa07e72dd435a0f62afe840f5c71c
12 - salsa20 91d9b963e172988a8fc2c5ff1a8d67073b2c5a09573cb03e901615dc1ea5162640f607e0d7134c981eedb761934cd8200fe90642a4608eacb82143e6e7b822c4
13 - salsa10 320b8cb8498d590ca2ec552008f1e55486116257a1e933d10d35c85a967f4a89c52158f755f775cd0b147ec64cde8934bae1e13bea81b8a4a55ac2c08efff4ce
14 - haval160,3 27ad6dd290161b883e614015b574b109233c7c0e
15 - haval256,3 03706dd2be7b1888bf9f3b151145b009859a720e3fe921a575e11be801c54c9a
16 - haval224,3 16706dd2c77b1888c29f3b151745b009879a720e4fe921a576e11be8
17 - ripemd160 f419c7c997a10aaf2d83a5fa03c58350d9f9d2e4
18 - tiger192,4 112f486d3a9000f822c050a204d284d52473f267b1247dbd
19 - tiger160,4 112f486d3a9000f822c050a204d284d52473f267
20 - tiger128,4 112f486d3a9000f822c050a204d284d5
21 - haval128,3 9d9155d430218e4dcdde1c62962ecca3
22 - sha256 6027f87b4dd4c732758aa52049257f9e9db7244f78c132d36d47f9033b5c3b09
23 - ripemd320 9ac00db553b51662826267daced37abfccca6433844f67d8f8cfd243cf78bbbf86839daf0961b61d
24 - haval192,3 7d706dd2d37c1888eaa53b154948b009e09c720effed21a5
25 - sha224 b6395266d8c7e40edde77969359e6a5d725f322e2ea4bd73d3d25768
26 - haval192,4 d87cd76e4c8006d401d7068dce5dec3d02dfa037d196ea14
27 - haval160,4 f2ddd76e156d0cd40eec0b8d09c8f23d0f47a437
28 - haval128,4 f066e6312b91e7ef69f26b2adbeba875
29 - haval224,4 1b7cd76ea97c06d439d6068d7d56ec3d73dba0373895ea14e465bc0e
30 - haval256,4 157cd76e8b7c06d432d6068d7556ec3d66dba0371c95ea14e165bc0ec31b9d37
31 - haval192,5 05f9ea219ae1b98ba33bac6b37ccfe2f248511046c80c2f0
32 - haval160,5 e054ec218637bc8b4bf1b26b2fb40230e0161904
33 - haval256,5 48f6ea210ee1b98be835ac6b7dc4fe2f39841104a37cc2f06ceb2bf58ab4fe78
34 - haval224,5 57f6ea2111e1b98bf735ac6b92c4fe2f43841104ab7cc2f076eb2bf5
35 - haval128,5 ccb8e0ac1fd12640ecd8976ab6402aa8
36 - sha384 bcf0eeaa1479bf6bef7ece0f5d7111c3aeee177aa7990926c633891464534cd8a6c69d905c36e882b3350ef40816ed02
37 - sha512 8def9a1e6e31423ef73c94251d7553f6fe3ed262c44e852bdb43e3e2a2b76254b4da5ef25aefb32aae260bb386cd133045adfa2024b067c2990b60d6f014e039
38 - gost ef6cb990b754b1d6a428f6bb5c113ee22cc9533558d203161441933d86e3b6f8
39 - whirlpool 54eb1d0667b6fdf97c01e005ac1febfacf8704da55c70f10f812b34cd9d45528b60d20f08765ced0ab3086d2bde312259aebf15d105318ae76995c4cf9a1e981
40 - snefru256 20849cbeda5ddec5043c09d36b2de4ba0ea9296b6c9efaa7c7257f30f351aea4
41 - snefru 20849cbeda5ddec5043c09d36b2de4ba0ea9296b6c9efaa7c7257f30f351aea4
42 - md2 d4864c8c95786480d1cf821f690753dc

4
마지막에는 최소 한 번의 오류가 있습니다. :)strlen($characters)strlen($characters) - 1
MM

29

xxhash 사이트에 속도 비교가 있습니다. 여기에 붙여 넣기 :

 Name            Speed       Q.Score   Author
 xxHash          5.4 GB/s     10
 MumurHash 3a    2.7 GB/s     10       Austin Appleby
 SpookyHash      2.0 GB/s     10       Bob Jenkins
 SBox            1.4 GB/s      9       Bret Mulvey
 Lookup3         1.2 GB/s      9       Bob Jenkins
 CityHash64      1.05 GB/s    10       Pike & Alakuijala
 FNV             0.55 GB/s     5       Fowler, Noll, Vo
 CRC32           0.43 GB/s     9
 MD5-32          0.33 GB/s    10       Ronald L. Rivest
 SHA1-32         0.28 GB/s    10

따라서 xxHash가 가장 빠른 것 같지만 다른 많은 사람들이 CRC32, MD5 및 SHA와 같은 오래된 해시를 이겼습니다.

https://code.google.com/p/xxhash/

이것은 32 비트 컴파일 순서입니다. 64 비트 컴파일에서 성능 순서는 매우 다를 수 있습니다. 해시 중 일부는 64 비트 곱셈 및 페치에 크게 의존합니다.


17
+-------------------+---------+------+--------------+
|       NAME        |  LOOPS  | TIME |     OP/S     |
+-------------------+---------+------+--------------+
| sha1ShortString   | 1638400 | 2.85 | 574,877.19   |
| md5ShortString    | 2777680 | 4.11 | 675,834.55   |
| crc32ShortString  | 3847980 | 3.61 | 1,065,922.44 |
| sha1MediumString  | 602620  | 4.75 | 126,867.37   |
| md5MediumString   | 884860  | 4.69 | 188,669.51   |
| crc32MediumString | 819200  | 4.85 | 168,907.22   |
| sha1LongString    | 181800  | 4.95 | 36,727.27    |
| md5LongString     | 281680  | 4.93 | 57,135.90    |
| crc32LongString   | 226220  | 4.95 | 45,701.01    |
+-------------------+---------+------+--------------+

작은 메시지 (이 경우 26 자)의 경우 crc32가 더 빠르고 긴 메시지 (이 경우> 852 자)의 경우 md5가 더 빠른 것 같습니다.


17

2019 년 업데이트 :이 답변은 최신 정보입니다. 중얼 거림을 지원하는 라이브러리는 대부분의 언어로 제공됩니다.

현재 권장 사항은 Murmur Hash 제품군 을 사용하는 것입니다 (특히 murmur2 또는 murmur3 변형 참조).

Murmur 해시는 최소한의 충돌 (CRC, MDx 및 SHAx보다 훨씬 빠름)로 빠른 해싱을 위해 설계되었습니다. 중복을 찾고 HashTable 인덱스에 매우 적합합니다.

사실 그것은 현대의 많은 데이터베이스 (Redis, ElastisSearch, Cassandra)에서 다양한 목적으로 모든 종류의 해시를 계산하는 데 사용됩니다. 이 특정 알고리즘은 현재 10 년 동안 많은 성능 향상의 근본 원인이었습니다.

Bloom Filters 구현에도 사용됩니다 . "고속 해시"를 검색하는 경우 아마도 블룸 필터로 해결되는 일반적인 문제에 직면했을 수 있습니다. ;-)

참고 : murmur는 NON 암호화를 의미하는 범용 해시입니다. 해시를 생성 한 소스 "텍스트"를 찾는 것을 막을 수는 없습니다. 비밀번호를 해시하는 것은 적합하지 않습니다.

자세한 내용 은 MurmurHash-무엇입니까?


2
여기 에 murmurhash를 PHP에 추가하라는 공개 요청 이 있습니다.
keune

8

MD5가 "정말 느리다"고 가정하지 말고 시도하십시오. 간단한 PC (단일 코어를 사용하는 2.4GHz Core2)에서 간단한 C5 기반 MD5 구현은 초당 6 백만 개의 작은 메시지를 해시 할 수 있습니다 . 작은 메시지는 여기에서 최대 55 바이트입니다. 더 긴 메시지의 경우 MD5 해싱 속도는 메시지 크기와 선형입니다. 즉, 초당 약 400MB의 데이터를 크런치합니다. 이것은 좋은 하드 디스크 나 기가비트 이더넷 네트워크 카드의 최대 속도의 4 배입니다.

내 PC에는 4 개의 코어가 있기 때문에 내 하드 디스크가 최대 6 %의 가용 컴퓨팅 성능을 제공하거나 수신 할 수있는 한 빠른 해싱 데이터를 의미합니다. 해싱 속도가 병목 현상이되거나 심지어 PC에서 눈에 띄는 비용을 유발하기 위해서는 매우 특별한 상황이 필요합니다.

해싱 속도가 훨씬 작은 구조에 있습니다 어느 정도 관련이 될, 당신은 MD4를 사용할 수 있습니다. MD4는 비 암호화 목적에 적합합니다 (암호화 목적에는 MD5를 사용해서는 안됩니다). ARM 기반 플랫폼에서 MD4가 CRC32보다 훨씬 빠르다고보고되었습니다.


고려해야 할 사항이 있습니다. MD5는 32 대신 128 비트를 사용합니다. 즉, 데이터베이스 저장 공간은 4 배 더 많은 공간이 필요하므로 해시를 비교하는 데 4 배 더 느립니다 ( 생각합니다 ). 내가 관심을 갖는 것은 (사용 목적으로) 나중에 해시가 가득 차 데이터베이스를 쿼리하는 것이 얼마나 빠를 지입니다.
Camilo Martin

3
충분히 넓은 출력을 사용하지 않으면 임의의 충돌이 발생합니다. 목표는 지정된 "구문"이 이미 알려져 있는지 알기 위해 데이터베이스를 쿼리하는 것이기 때문에 좋지 않습니다. 여기서의 충돌은 오 탐지로 바뀝니다. 32 비트를 사용하면 60000 정도의 프레이즈가있는 즉시 충돌이 시작됩니다. 이것은 암호화 여부에 관계없이 모든 해시 함수에 적용됩니다. 즉, 위에서 설명한 제한 내에서 해시 함수의 출력을 항상 원하는 길이로자를 수 있습니다.
Thomas Pornin

@ThomasPornin 우리가 잘린 방식으로가더라도 충돌 문제가 다시 발생하지 않더라도, md5가 쉽게 충돌하지 않는 유일한 이유는 CRC32와 비교할 때 문자가 추가되지 않기 때문입니다.
Mohd Abdul Mujib

4

경고

답은 아래 않습니다 하지 요청으로 해시 기능을 권장하지 않기 때문에, 질문에 대답. "해시 함수는 임의 크기의 데이터를 고정 크기 값에 매핑하는 데 사용할 수있는 함수입니다." (위키 백과) 아래 답변은 고정 크기 결과를 보장하지 않는 변환을 권장합니다.

해시 함수 사용 요구 사항을 완화 시키 려면 계속 읽으십시오 ...

원래 답변

다음과 같은 이유로 urlencode () 또는 base64_encode ()를 제안합니다.

  • 암호화가 필요하지 않습니다
  • 너는 속도를 원해
  • '잘못된'문자열을 정리하는 동안 고유 한 문자열을 식별하는 방법을 원합니다

이 답변의 다른 곳에서 벤치 마크 코드를 적용 하여이 중 하나가 해시 알고리즘보다 빠르다는 것을 보여주었습니다. 응용 프로그램에 따라 urlencode () 또는 base64_encode ()를 사용하여 저장하려는 '잘못된'문자열을 정리할 수 있습니다.


Re : " '잘못된'문자열을 정리하는 동안 고유 한 문자열을 식별 할 수있는 방법이 필요합니다. 좀 더 정교하겠습니까?
David J.

6 년 전에 내가 생각한 것을 기억하기는 어렵습니다 ... urlencode 또는 base64_encode와 충돌하지 않는다는 사실을 암시했을 수도 있습니다. 따라서 결과는 원래 문자열만큼 독특합니다.
Anachronist

2

1 단계 : libsodium 설치 (또는 PHP 7.2 이상을 사용 중인지 확인)

2 단계 : 다음 중 하나를 사용하십시오.

  1. sodium_crypto_generichash(), 어떤 BLAKE2b , 더 MD5보다는 안전하지만 빠른 SHA256보다 해시 함수. (링크에는 벤치 마크 등이 있습니다.)
  2. sodium_crypto_shorthash(), 이것은 SipHash-2-4 이며, 해시 테이블에는 적합하지만 충돌 저항에는 의존해서는 안됩니다.

_shorthash은 약 3 배 빠르지 _generichash만 키가 필요하고 작지만 사실적인 충돌 위험이 있습니다. 을 사용하면 _generichash충돌에 대해 걱정할 필요가 없으며 키를 사용할 필요가 없습니다 (그러나 어쨌든 원할 수 있음).


1
질문은 "이것이 얼마나 빠르 냐"입니까?
My1

1
sodium_crypto_generichash(), which is BLAKE2b, a hash function more secure than MD5 but faster than SHA256. (Link has benchmarks, etc.)-blake2b는 확실하지만 blake2b의 USERLAND PHP 구현은 PHP 용 C 구현 sha256보다 훨씬 느려질 것입니다 ... PHP가 hash_algos () 제품군에서 blake2b를 능가 할 수 있기를 바랍니다.
hanshenrik

순수한 PHP 구현은 여기에서 제안되지 않았습니다.
Scott Arciszewski 19


1

Adler32는 내 컴퓨터에서 가장 잘 작동합니다. 그리고 md5()보다 빠르다 crc32().


3
MD5가 일반 CRC32 함수보다 빠르면 매우 잘못된 것입니다.
nxasdf

0

해시 내부의 md5 구현은 md5 ()보다 약간 빠릅니다. 따라서 이것은 옵션이거나 다른 것일 수 있습니다.

echo '<pre>';

$run = array();

function test($algo)
{
  #static $c = 0;
  #if($c>10) return;
  #$c++;

 $tss = microtime(true);
 for($i=0; $i<100000; $i++){
  $x = hash($algo, "ana are mere");
 }
 $tse = microtime(true);

 $GLOBALS['run'][(string)round($tse-$tss, 5)] = "\nhash({$algo}): \t".round($tse-$tss, 5) . " \t" . $x;
 #echo "\n$i nhash({$algo}): \t".round($tse-$tss, 5) . " \t" . $x;
}
array_map('test', hash_algos());
ksort($run);
print_r($run);
echo '</pre>';

http://www.dozent.net/Tipps-Tricks/PHP/hash-performance 에서 볼 수 있습니다


0

CRC32 는 MD5 및 SHA1보다 빠르지 만 덜 안전합니다. MD5와 SHA1 사이에는 큰 속도 차이가 없습니다.


MD5는 이제 안전하지 않은 것으로 간주됩니다. SHA1보다 안전하지 않습니다. MD5 위키 페이지를 읽으십시오.
Ahmed
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.