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

(사용자 2명의 중간 판 16개는 보이지 않습니다)
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() {
14번째 줄: 11번째 줄:
     return ((float)$usec + (float)$sec);
     return ((float)$usec + (float)$sec);
}
}
 
$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<100000;$i++) {
    $end = get_time();
$hash_value = hash($algo, '다람쥐 쳇바퀴 타고파');
    $time = $end - $start;
}
    echo $algo."\t";
$end = get_time();
    echo number_format($time,5)."\t";
$time = $end - $start;
    echo strlen($hash_value)."\t";
    echo $hash_value."\n";
echo $algo."\t";
echo number_format($time,5)."\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.08666||7b0edaff
| 1 || crc32b || 0.17888 || 8 || 590d4e4b
|-
|-
| 2||crc32||0.09154||bfc3bc45
| 2 || crc32 || 0.19157 || 8 || 91d5837a
|-
|-
| 3||adler32||0.09953||7815aa6f
| 3 || md4 || 0.21683 || 32 || 18eccd1cddee900df0c8fc55bf94d390
|-
|-
| 4||md4||0.10341||e26235ade8d8a519549e567fbfa376fe
| 4 || adler32 || 0.23199 || 8 || 69156f6e
|-
|-
| 5||md5||0.11429||e0f78e455d4ec3b3f86c3227d6dcb416
| 5 || md5 || 0.25052 || 32 || 993ba8e67013ddf822d8d18d45443110
|-
|-
| 6||sha1||0.12123||0c7302fe9b2230f512d7f568be8cb582f0235b58
| 6 || tiger128,3 || 0.25292 || 32 || 7509999da305d6a1cb079aa91bd865d2
|-
|-
| 7||tiger160,3||0.12211||36dc1eaf4ad43aeec3bb62b4b76982cebea7b49d
| 7 || tiger160,3 || 0.25597 || 40 || 7509999da305d6a1cb079aa91bd865d2e204bd0f
|-
|-
| 8||tiger128,3||0.12267||36dc1eaf4ad43aeec3bb62b4b76982ce
| 8 || tiger192,3 || 0.26382 || 48 || 7509999da305d6a1cb079aa91bd865d2e204bd0f00c4ddf6
|-
|-
| 9||tiger192,3||0.12675||36dc1eaf4ad43aeec3bb62b4b76982cebea7b49d8e5f535d
| 9 || sha1 || 0.26618 || 40 || 7b0b11296dfa758f63e91db05ed4d9f72b58c578
|-
|-
| 10||tiger128,4||0.13667||a67e70547e505863a0f486cc4f00ebf2
| 10 || tiger128,4 || 0.28568 || 32 || bea6f95169816fe46ab41833ed71fdf3
|-
|-
| 11||tiger160,4||0.13779||a67e70547e505863a0f486cc4f00ebf2c6476d6a
| 11 || tiger160,4 || 0.28739 || 40 || bea6f95169816fe46ab41833ed71fdf30e2a730b
|-
|-
| 12||tiger192,4||0.13814||a67e70547e505863a0f486cc4f00ebf2c6476d6abc6fe8ba
| 12 || tiger192,4 || 0.29094 || 48 || bea6f95169816fe46ab41833ed71fdf30e2a730b8144b654
|-
|-
| 13||ripemd128||0.17244||dca78ff4148cc59c5765decf5410caa5
| 13 || ripemd128 || 0.34877 || 32 || 7cd47221e5eaebe045b8523eef3e8e43
|-
|-
| 14||ripemd256||0.17631||0155faa4e6d00cf71a3c9bb3fa6e065b573b7611f338311b85caf48897d11ddc
| 14 || ripemd256 || 0.36446 || 64 || 0f16dd91f998b661ce3681a56e47b2a3ba093cbed5a4f0dc1913305cd6ffc256
|-
|-
| 15||ripemd160||0.19589||ffcea34506173f7e95d2186f84ce57dbde133da9
| 15 || ripemd160 || 0.41295 || 40 || 5a501f9c761e610c62a625ac8d079582e0a8e878
|-
|-
| 16||ripemd320||0.20958||30fc39db6b1bb704d1f34978f15aa027eb41f9aefa4b1de9d80b2e68718db95160233848f447391d
| 16 || sha256 || 0.42983 || 64 || 6c216eee540504941185cd0386eeb4a44f300ecae3fd3700dab0719e98301908
|-
|-
| 17||sha256||0.21007||6f43271fee8a49f84e88dcb5fc9d9f0908a0df7b9faa838ceb8d8ba317c187da
| 17 || ripemd320 || 0.44928 || 80 || 08b086c8e8bc42732a682849a81ea2ca4ec2ac04a1ab7f8d4cf7a7c665a4b5d73e4710ef9fa4204a
|-
|-
| 18||haval128,3||0.24087||8933d61cefc3176338d7483a13d51a90
| 18 || sha384 || 0.51008 || 96 || a747bb05453dd7ced555f0e9ca81b69f05950367ec88c3bfd60c4439b523f4a84db6921719f97ab3c6baadb7b0ee8ef4
|-
|-
| 19||haval160,3||0.24137||8e3ffa3021d39e4a89c24b657d292462c16cd18b
| 19 || haval128,3 || 0.51404 || 32 || 59f242fc95f4b20fbc0406ffe064554e
|-
|-
| 20||haval192,3||0.24474||ffccd3d58711aad4ba6ff6a1ba8b37fe24f2a91f3c818189
| 20 || sha512 || 0.52009 || 128 || 0e55e69e4ff2c2d1a4b643fc2433dbda6fe4e7eb571a9f57c164c1ededf6b4ce9adae6c8a0c0ce1a408d7d9c95afc35dd9c61b48e261dc29298186f50ba64d13
|-
|-
| 21||haval224,3||0.24656||ceccc69dee45357ffcccbe6073816703f492a39ce5f8e7ec0d62d4fd
| 21 || haval256,3 || 0.52471 || 64 || 3b4b02ed86f53a6e41105b28258a3cb5d3a7f9174561b3221215667717fa6deb
|-
|-
| 22||haval256,3||0.25005||9e935271fa2e3132ffa3a2f5fefe7e49d288b4ced5d6ec3c9d126cc96f752e24
| 22 || haval192,3 || 0.52506 || 48 || 915ea379646e5cf913a0dc99497577457979e1b58f01eae6
|-
|-
| 23||sha384||0.25736||932dce4e61c81716cec6f9459160565157d8b697be26460edeb10a94cf407e2e8fee5d3436e2a58ef0b0ceae5be23621
| 23 || haval224,3 || 0.52591 || 56 || 44e50942e7c266c5c7aa30959ca3604258aac93ea226e27995f95df5
|-
|-
| 24||sha512||0.26119||daf03f090d363668e81826ba4ba41577aedd072d1eb822fea90bd25cb8b071b4ed9c5816b50c4d4490974dc7318d03a3da475ab9afee1b6b63fc26cfebf4ed7f
| 24 || haval160,3 || 0.52788 || 40 || 2bed4e71819b173bfc34782987738ad221d901ec
|-
|-
| 25||haval128,4||0.29859||c2160db8791266f94d818e6a663ad6d5
| 25 || haval160,4 || 0.61706 || 40 || 79ce3d9ea93cdf353d6bc580eb9ddfd5d62c91b9
|-
|-
| 26||haval160,4||0.30165||b117832a8895570c570d5477e1302f78441c66d8
| 26 || haval192,4 || 0.62014 || 48 || c80c60a9eba6e80099e707d813eef426d84c84d0d2ef50d0
|-
|-
| 27||haval256,4||0.30694||612dc753a8edc4d594be8d2f2b9256a7bf5b4a06fd06167bc5994a7678c1086f
| 27 || haval128,4 || 0.62194 || 32 || 45abde6a6e2855d922737748bfd008a4
|-
|-
| 28||haval192,4||0.30801||e7d3e27d0bfe4d1a057161cd420e4ab664a8389c8a80881d
| 28 || haval224,4 || 0.6233 || 56 || b686e575b67f438837962491fa8b8a7e6149ab46d3e47fcc6b7fe097
|-
|-
| 29||haval224,4||0.3081||203308629dda469a1561cb614bf2fed821a1728bdfbcc57eb97e40f4
| 29 || haval256,4 || 0.62871 || 64 || 610d76fa1544a8c50dbc30298bc993741be0e8b5a58526aa91afbfec3f6850db
|-
|-
| 30||haval128,5||0.33649||6b099f9fbeabf26626eb3f8cdf0acb9f
| 30 || haval256,5 || 0.7001 || 64 || 62d3888c4a20748be0a0f1bebcc2187dd37aa319474a6db32cd23603da47cf1b
|-
|-
| 31||haval160,5||0.3375||8e058a6dcb463644a8220d9a688ca10ce935e676
| 31 || haval128,5 || 0.71733 || 32 || cf4889155db5abcb059fcfbd7c5963a1
|-
|-
| 32||haval192,5||0.33997||aa089bfb7201fca82c4876a575d0b42c2586eefd88f0a6e1
| 32 || haval160,5 || 0.72231 || 40 || 9b444ac7ff5ee9ebcc96b3f9332c0df545e7a2a6
|-
|-
| 33||haval256,5||0.35165||cbd8844c8b186437e494f12cbc3839308d23caee0089633ac2013609fd0f267c
| 33 || haval192,5 || 0.72236 || 48 || 475b3cf46307c9348187da5ab2c70d9fad4127aaf62a5aac
|-
|-
| 34||haval224,5||0.355||96e3ecccfbab338e6a533c64b432e027cd4cdd63f838bbdce1a3e28a
| 34 || haval224,5 || 0.72414 || 56 || e53d73c37c6619ea259544636befb59f40629509bf0a9dcdbb346737
|-
|-
| 35||whirlpool||0.54685||0fba24797520080a3f4cc1f66f2447f71cc0d3a6b8e81c49b8733234adf46661387586e1578b08dc01075076cd85d9e20faea1d4c88a0038a2201f41af511e54
| 35 || whirlpool || 1.1002 || 128 || 4fc9e309ee64101c6f9b7f9121bd147689dcef0097a64c05357ba9ac6b4bdeac0f7129ec265e1e439c077bc748740f9a6501d39a7f0085a49df641dd635f6f39
|-
|-
| 36||gost||0.64053||6d2f8c38e06a05f22eccb43cd1d59ea083305b3fa5534e48d1c6cb6f61197910
| 36 || gost || 1.29657 || 64 || 39172b05b1759d5c4dbda5d717e58aa0577cd519f2ae2b0b7b9cb29fcb0c5e35
|-
|-
| 37||snefru||0.99872||1f1ae535ff0334d17e58e7827ce882c2ccd855b34f97cc8bc3c2bb4cbd82cd0d
| 37 || snefru || 2.00746 || 64 || 63f16b2b59dbc5c8306dc64fbd77cc18f62d912342b59a27f0164f40e3001807
|-
|-
| 38||md2||1.42272||2ce22516e87b7770375f2773adb586c9
| 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 }}