"해시 알고리즘 속도 비교"의 두 판 사이의 차이

(사용자 2명의 중간 판 14개는 보이지 않습니다)
1번째 줄: 1번째 줄:
==개요==
;해시 함수 속도 비교
;해시 함수 속도 비교
;해시 알고리즘 속도 비교
;해시 알고리즘 속도 비교
 
*해시 알고리즘들의 속도를 비교하기 위해 20만회씩 실행시키고 걸린 시간을 측정하였다.
==개요==
해시 알고리즘들의 속도를 비교하기 위해 10만회씩 실행시키고 걸린 시간을 측정하였다.


==소스 코드==
==소스 코드==
<source lang='php'>
<syntaxhighlight lang='php' run>
<!DOCTYPE html>
<meta charset="utf-8" />
<?php
<?php
function get_time() {
function get_time() {
15번째 줄: 12번째 줄:
}
}
   
   
$algos = array('md2','md4','md5','sha1','sha256','sha384','sha512',
$algos = ['md2','md4','md5','sha1','sha256','sha384','sha512',
'ripemd128','ripemd160','ripemd256','ripemd320','whirlpool',
'ripemd128','ripemd160','ripemd256','ripemd320','whirlpool',
'tiger128,3','tiger160,3','tiger192,3','tiger128,4','tiger160,4','tiger192,4',
'tiger128,3','tiger160,3','tiger192,3','tiger128,4','tiger160,4','tiger192,4',
21번째 줄: 18번째 줄:
'haval128,3','haval160,3','haval192,3','haval224,3','haval256,3','haval128,4',
'haval128,3','haval160,3','haval192,3','haval224,3','haval256,3','haval128,4',
'haval160,4','haval192,4','haval224,4','haval256,4','haval128,5','haval160,5',
'haval160,4','haval192,4','haval224,4','haval256,4','haval128,5','haval160,5',
'haval192,5','haval224,5','haval256,5');
'haval192,5','haval224,5','haval256,5'];
   
   
echo "<textarea style='width:800px;height:500px'>";
echo "알고리즘\t수행시간\t값길이\t해시값\n";
echo "알고리즘\t수행시간\t해시값\n";
foreach($algos as $algo) {
foreach($algos as $algo) {
        $start = get_time();
    $start = get_time();
    for($i=0;$i<200000;$i++) $hash_value = hash($algo, '다람쥐 헌 쳇바퀴 타고파');
        for($i=0;$i<200000;$i++) {
    $end = get_time();
                $hash_value = hash($algo, '다람쥐 헌 쳇바퀴 타고파');
    $time = $end - $start;
        }
        $end = get_time();
        $time = $end - $start;
   
   
        echo $algo."\t";
    echo $algo."\t";
        echo number_format($time,5)."\t";
    echo number_format($time,5)."\t";
        echo $hash_value."\n";
    echo strlen($hash_value)."\t";
    echo $hash_value."\n";
}
}
echo "</textarea>";
</syntaxhighlight>
</source>


==비교 결과==
==비교 결과==
위쪽이 빠름
{| class='wikitable'
{| class='wikitable'
| align="center" style="background:#f0f0f0;"|'''순위'''
! style='min-width:3.5vw'| 순위
| align="center" style="background:#f0f0f0;"|'''알고리즘'''
! style='min-width:10.1vw'| 알고리즘
| align="center" style="background:#f0f0f0;"|'''수행시간 (초)'''
! style='min-width:8vw'| 수행시간 (초)
| align="center" style="background:#f0f0f0;"|'''해시값'''
! style='min-width:4.4vw'| 값길이
! 해시값
|-
|-
| 1 || crc32b || 0.17888 || 590d4e4b
| 1 || crc32b || 0.17888 || 8 || 590d4e4b
|-
|-
| 2 || crc32 || 0.19157 || 91d5837a
| 2 || crc32 || 0.19157 || 8 || 91d5837a
|-
|-
| 3 || md4 || 0.21683 || 18eccd1cddee900df0c8fc55bf94d390
| 3 || md4 || 0.21683 || 32 || 18eccd1cddee900df0c8fc55bf94d390
|-
|-
| 4 || adler32 || 0.23199 || 69156f6e
| 4 || adler32 || 0.23199 || 8 || 69156f6e
|-
|-
| 5 || md5 || 0.25052 || 993ba8e67013ddf822d8d18d45443110
| 5 || md5 || 0.25052 || 32 || 993ba8e67013ddf822d8d18d45443110
|-
|-
| 6 || tiger128,3 || 0.25292 || 7509999da305d6a1cb079aa91bd865d2
| 6 || tiger128,3 || 0.25292 || 32 || 7509999da305d6a1cb079aa91bd865d2
|-
|-
| 7 || tiger160,3 || 0.25597 || 7509999da305d6a1cb079aa91bd865d2e204bd0f
| 7 || tiger160,3 || 0.25597 || 40 || 7509999da305d6a1cb079aa91bd865d2e204bd0f
|-
|-
| 8 || tiger192,3 || 0.26382 || 7509999da305d6a1cb079aa91bd865d2e204bd0f00c4ddf6
| 8 || tiger192,3 || 0.26382 || 48 || 7509999da305d6a1cb079aa91bd865d2e204bd0f00c4ddf6
|-
|-
| 9 || sha1 || 0.26618 || 7b0b11296dfa758f63e91db05ed4d9f72b58c578
| 9 || sha1 || 0.26618 || 40 || 7b0b11296dfa758f63e91db05ed4d9f72b58c578
|-
|-
| 10 || tiger128,4 || 0.28568 || bea6f95169816fe46ab41833ed71fdf3
| 10 || tiger128,4 || 0.28568 || 32 || bea6f95169816fe46ab41833ed71fdf3
|-
|-
| 11 || tiger160,4 || 0.28739 || bea6f95169816fe46ab41833ed71fdf30e2a730b
| 11 || tiger160,4 || 0.28739 || 40 || bea6f95169816fe46ab41833ed71fdf30e2a730b
|-
|-
| 12 || tiger192,4 || 0.29094 || bea6f95169816fe46ab41833ed71fdf30e2a730b8144b654
| 12 || tiger192,4 || 0.29094 || 48 || bea6f95169816fe46ab41833ed71fdf30e2a730b8144b654
|-
|-
| 13 || ripemd128 || 0.34877 || 7cd47221e5eaebe045b8523eef3e8e43
| 13 || ripemd128 || 0.34877 || 32 || 7cd47221e5eaebe045b8523eef3e8e43
|-
|-
| 14 || ripemd256 || 0.36446 || 0f16dd91f998b661ce3681a56e47b2a3ba093cbed5a4f0dc1913305cd6ffc256
| 14 || ripemd256 || 0.36446 || 64 || 0f16dd91f998b661ce3681a56e47b2a3ba093cbed5a4f0dc1913305cd6ffc256
|-
|-
| 15 || ripemd160 || 0.41295 || 5a501f9c761e610c62a625ac8d079582e0a8e878
| 15 || ripemd160 || 0.41295 || 40 || 5a501f9c761e610c62a625ac8d079582e0a8e878
|-
|-
| 16 || sha256 || 0.42983 || 6c216eee540504941185cd0386eeb4a44f300ecae3fd3700dab0719e98301908
| 16 || sha256 || 0.42983 || 64 || 6c216eee540504941185cd0386eeb4a44f300ecae3fd3700dab0719e98301908
|-
|-
| 17 || ripemd320 || 0.44928 || 08b086c8e8bc42732a682849a81ea2ca4ec2ac04a1ab7f8d4cf7a7c665a4b5d73e4710ef9fa4204a
| 17 || ripemd320 || 0.44928 || 80 || 08b086c8e8bc42732a682849a81ea2ca4ec2ac04a1ab7f8d4cf7a7c665a4b5d73e4710ef9fa4204a
|-
|-
| 18 || sha384 || 0.51008 || a747bb05453dd7ced555f0e9ca81b69f05950367ec88c3bfd60c4439b523f4a84db6921719f97ab3c6baadb7b0ee8ef4
| 18 || sha384 || 0.51008 || 96 || a747bb05453dd7ced555f0e9ca81b69f05950367ec88c3bfd60c4439b523f4a84db6921719f97ab3c6baadb7b0ee8ef4
|-
|-
| 19 || haval128,3 || 0.51404 || 59f242fc95f4b20fbc0406ffe064554e
| 19 || haval128,3 || 0.51404 || 32 || 59f242fc95f4b20fbc0406ffe064554e
|-
|-
| 20 || sha512 || 0.52009 || 0e55e69e4ff2c2d1a4b643fc2433dbda6fe4e7eb571a9f57c164c1ededf6b4ce9adae6c8a0c0ce1a408d7d9c95afc35dd9c61b48e261dc29298186f50ba64d13
| 20 || sha512 || 0.52009 || 128 || 0e55e69e4ff2c2d1a4b643fc2433dbda6fe4e7eb571a9f57c164c1ededf6b4ce9adae6c8a0c0ce1a408d7d9c95afc35dd9c61b48e261dc29298186f50ba64d13
|-
|-
| 21 || haval256,3 || 0.52471 || 3b4b02ed86f53a6e41105b28258a3cb5d3a7f9174561b3221215667717fa6deb
| 21 || haval256,3 || 0.52471 || 64 || 3b4b02ed86f53a6e41105b28258a3cb5d3a7f9174561b3221215667717fa6deb
|-
|-
| 22 || haval192,3 || 0.52506 || 915ea379646e5cf913a0dc99497577457979e1b58f01eae6
| 22 || haval192,3 || 0.52506 || 48 || 915ea379646e5cf913a0dc99497577457979e1b58f01eae6
|-
|-
| 23 || haval224,3 || 0.52591 || 44e50942e7c266c5c7aa30959ca3604258aac93ea226e27995f95df5
| 23 || haval224,3 || 0.52591 || 56 || 44e50942e7c266c5c7aa30959ca3604258aac93ea226e27995f95df5
|-
|-
| 24 || haval160,3 || 0.52788 || 2bed4e71819b173bfc34782987738ad221d901ec
| 24 || haval160,3 || 0.52788 || 40 || 2bed4e71819b173bfc34782987738ad221d901ec
|-
|-
| 25 || haval160,4 || 0.61706 || 79ce3d9ea93cdf353d6bc580eb9ddfd5d62c91b9
| 25 || haval160,4 || 0.61706 || 40 || 79ce3d9ea93cdf353d6bc580eb9ddfd5d62c91b9
|-
|-
| 26 || haval192,4 || 0.62014 || c80c60a9eba6e80099e707d813eef426d84c84d0d2ef50d0
| 26 || haval192,4 || 0.62014 || 48 || c80c60a9eba6e80099e707d813eef426d84c84d0d2ef50d0
|-
|-
| 27 || haval128,4 || 0.62194 || 45abde6a6e2855d922737748bfd008a4
| 27 || haval128,4 || 0.62194 || 32 || 45abde6a6e2855d922737748bfd008a4
|-
|-
| 28 || haval224,4 || 0.6233 || b686e575b67f438837962491fa8b8a7e6149ab46d3e47fcc6b7fe097
| 28 || haval224,4 || 0.6233 || 56 || b686e575b67f438837962491fa8b8a7e6149ab46d3e47fcc6b7fe097
|-
|-
| 29 || haval256,4 || 0.62871 || 610d76fa1544a8c50dbc30298bc993741be0e8b5a58526aa91afbfec3f6850db
| 29 || haval256,4 || 0.62871 || 64 || 610d76fa1544a8c50dbc30298bc993741be0e8b5a58526aa91afbfec3f6850db
|-
|-
| 30 || haval256,5 || 0.7001 || 62d3888c4a20748be0a0f1bebcc2187dd37aa319474a6db32cd23603da47cf1b
| 30 || haval256,5 || 0.7001 || 64 || 62d3888c4a20748be0a0f1bebcc2187dd37aa319474a6db32cd23603da47cf1b
|-
|-
| 31 || haval128,5 || 0.71733 || cf4889155db5abcb059fcfbd7c5963a1
| 31 || haval128,5 || 0.71733 || 32 || cf4889155db5abcb059fcfbd7c5963a1
|-
|-
| 32 || haval160,5 || 0.72231 || 9b444ac7ff5ee9ebcc96b3f9332c0df545e7a2a6
| 32 || haval160,5 || 0.72231 || 40 || 9b444ac7ff5ee9ebcc96b3f9332c0df545e7a2a6
|-
|-
| 33 || haval192,5 || 0.72236 || 475b3cf46307c9348187da5ab2c70d9fad4127aaf62a5aac
| 33 || haval192,5 || 0.72236 || 48 || 475b3cf46307c9348187da5ab2c70d9fad4127aaf62a5aac
|-
|-
| 34 || haval224,5 || 0.72414 || e53d73c37c6619ea259544636befb59f40629509bf0a9dcdbb346737
| 34 || haval224,5 || 0.72414 || 56 || e53d73c37c6619ea259544636befb59f40629509bf0a9dcdbb346737
|-
|-
| 35 || whirlpool || 1.1002 || 4fc9e309ee64101c6f9b7f9121bd147689dcef0097a64c05357ba9ac6b4bdeac0f7129ec265e1e439c077bc748740f9a6501d39a7f0085a49df641dd635f6f39
| 35 || whirlpool || 1.1002 || 128 || 4fc9e309ee64101c6f9b7f9121bd147689dcef0097a64c05357ba9ac6b4bdeac0f7129ec265e1e439c077bc748740f9a6501d39a7f0085a49df641dd635f6f39
|-
|-
| 36 || gost || 1.29657 || 39172b05b1759d5c4dbda5d717e58aa0577cd519f2ae2b0b7b9cb29fcb0c5e35
| 36 || gost || 1.29657 || 64 || 39172b05b1759d5c4dbda5d717e58aa0577cd519f2ae2b0b7b9cb29fcb0c5e35
|-
|-
| 37 || snefru || 2.00746 || 63f16b2b59dbc5c8306dc64fbd77cc18f62d912342b59a27f0164f40e3001807
| 37 || snefru || 2.00746 || 64 || 63f16b2b59dbc5c8306dc64fbd77cc18f62d912342b59a27f0164f40e3001807
|-
|-
| 38 || md2 || 3.01494 || 91ec72722b20f18ef2b0f8e58e81d44a
| 38 || md2 || 3.01494 || 32 || 91ec72722b20f18ef2b0f8e58e81d44a
|}
|}


==같이 보기==
==같이 보기==
*[[PHP 수행시간 측정]]
*[[PHP 수행시간 측정]]
*[[해시 함수]]
*[[AES]]


==참고자료==
==참고==
*http://kr.php.net/manual/en/function.hash.php
*http://kr.php.net/manual/en/function.hash.php


[[분류:PHP]]
[[분류: PHP]]
[[분류:해시]]
[[분류: 해시 함수]]
[[분류: 수행시간 측정]]

2021년 11월 8일 (월) 23:43 판

1 개요

해시 함수 속도 비교
해시 알고리즘 속도 비교
  • 해시 알고리즘들의 속도를 비교하기 위해 20만회씩 실행시키고 걸린 시간을 측정하였다.

2 소스 코드

<?php
function get_time() {
    list($usec, $sec) = explode(" ", microtime());
    return ((float)$usec + (float)$sec);
}
 
$algos = ['md2','md4','md5','sha1','sha256','sha384','sha512',
'ripemd128','ripemd160','ripemd256','ripemd320','whirlpool',
'tiger128,3','tiger160,3','tiger192,3','tiger128,4','tiger160,4','tiger192,4',
'snefru','gost','adler32','crc32','crc32b',
'haval128,3','haval160,3','haval192,3','haval224,3','haval256,3','haval128,4',
'haval160,4','haval192,4','haval224,4','haval256,4','haval128,5','haval160,5',
'haval192,5','haval224,5','haval256,5'];
 
echo "알고리즘\t수행시간\t값길이\t해시값\n";
foreach($algos as $algo) {
    $start = get_time();
    for($i=0;$i<200000;$i++) $hash_value = hash($algo, '다람쥐 헌 쳇바퀴 타고파');
    $end = get_time();
    $time = $end - $start;
 
    echo $algo."\t";
    echo number_format($time,5)."\t";
    echo strlen($hash_value)."\t";
    echo $hash_value."\n";
}

3 비교 결과

위쪽이 빠름

순위 알고리즘 수행시간 (초) 값길이 해시값
1 crc32b 0.17888 8 590d4e4b
2 crc32 0.19157 8 91d5837a
3 md4 0.21683 32 18eccd1cddee900df0c8fc55bf94d390
4 adler32 0.23199 8 69156f6e
5 md5 0.25052 32 993ba8e67013ddf822d8d18d45443110
6 tiger128,3 0.25292 32 7509999da305d6a1cb079aa91bd865d2
7 tiger160,3 0.25597 40 7509999da305d6a1cb079aa91bd865d2e204bd0f
8 tiger192,3 0.26382 48 7509999da305d6a1cb079aa91bd865d2e204bd0f00c4ddf6
9 sha1 0.26618 40 7b0b11296dfa758f63e91db05ed4d9f72b58c578
10 tiger128,4 0.28568 32 bea6f95169816fe46ab41833ed71fdf3
11 tiger160,4 0.28739 40 bea6f95169816fe46ab41833ed71fdf30e2a730b
12 tiger192,4 0.29094 48 bea6f95169816fe46ab41833ed71fdf30e2a730b8144b654
13 ripemd128 0.34877 32 7cd47221e5eaebe045b8523eef3e8e43
14 ripemd256 0.36446 64 0f16dd91f998b661ce3681a56e47b2a3ba093cbed5a4f0dc1913305cd6ffc256
15 ripemd160 0.41295 40 5a501f9c761e610c62a625ac8d079582e0a8e878
16 sha256 0.42983 64 6c216eee540504941185cd0386eeb4a44f300ecae3fd3700dab0719e98301908
17 ripemd320 0.44928 80 08b086c8e8bc42732a682849a81ea2ca4ec2ac04a1ab7f8d4cf7a7c665a4b5d73e4710ef9fa4204a
18 sha384 0.51008 96 a747bb05453dd7ced555f0e9ca81b69f05950367ec88c3bfd60c4439b523f4a84db6921719f97ab3c6baadb7b0ee8ef4
19 haval128,3 0.51404 32 59f242fc95f4b20fbc0406ffe064554e
20 sha512 0.52009 128 0e55e69e4ff2c2d1a4b643fc2433dbda6fe4e7eb571a9f57c164c1ededf6b4ce9adae6c8a0c0ce1a408d7d9c95afc35dd9c61b48e261dc29298186f50ba64d13
21 haval256,3 0.52471 64 3b4b02ed86f53a6e41105b28258a3cb5d3a7f9174561b3221215667717fa6deb
22 haval192,3 0.52506 48 915ea379646e5cf913a0dc99497577457979e1b58f01eae6
23 haval224,3 0.52591 56 44e50942e7c266c5c7aa30959ca3604258aac93ea226e27995f95df5
24 haval160,3 0.52788 40 2bed4e71819b173bfc34782987738ad221d901ec
25 haval160,4 0.61706 40 79ce3d9ea93cdf353d6bc580eb9ddfd5d62c91b9
26 haval192,4 0.62014 48 c80c60a9eba6e80099e707d813eef426d84c84d0d2ef50d0
27 haval128,4 0.62194 32 45abde6a6e2855d922737748bfd008a4
28 haval224,4 0.6233 56 b686e575b67f438837962491fa8b8a7e6149ab46d3e47fcc6b7fe097
29 haval256,4 0.62871 64 610d76fa1544a8c50dbc30298bc993741be0e8b5a58526aa91afbfec3f6850db
30 haval256,5 0.7001 64 62d3888c4a20748be0a0f1bebcc2187dd37aa319474a6db32cd23603da47cf1b
31 haval128,5 0.71733 32 cf4889155db5abcb059fcfbd7c5963a1
32 haval160,5 0.72231 40 9b444ac7ff5ee9ebcc96b3f9332c0df545e7a2a6
33 haval192,5 0.72236 48 475b3cf46307c9348187da5ab2c70d9fad4127aaf62a5aac
34 haval224,5 0.72414 56 e53d73c37c6619ea259544636befb59f40629509bf0a9dcdbb346737
35 whirlpool 1.1002 128 4fc9e309ee64101c6f9b7f9121bd147689dcef0097a64c05357ba9ac6b4bdeac0f7129ec265e1e439c077bc748740f9a6501d39a7f0085a49df641dd635f6f39
36 gost 1.29657 64 39172b05b1759d5c4dbda5d717e58aa0577cd519f2ae2b0b7b9cb29fcb0c5e35
37 snefru 2.00746 64 63f16b2b59dbc5c8306dc64fbd77cc18f62d912342b59a27f0164f40e3001807
38 md2 3.01494 32 91ec72722b20f18ef2b0f8e58e81d44a

4 같이 보기

5 참고

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}