해시함수
고정된 길이의 해쉬값을 출력하는 함수
md5를 사용했을때의 결과는 다음과 같다.
입력값이 "1"일때
입력값이 "adbklakdjrlyjlkwejlgkjsrjitpjhopeeojlkajslkdjfkjaskdfjglkdsjflkhawkejrpy pasjglkajerlkjylkajsdlkfjlkasjdptggowrjytsjdllqqweqwe" 일때
(md5 테스트 : http://www.danstools.com/md5-hash-generator/ )
사용목적
보안을 위해
수신측이 입력값을 알지못해도
보내는 시점과 받는 시점의 해시값을 비교하고,
만약 그값이 동일하다면,
이값은 변조가 없었다. 라는 판단을 하는것이 목적
인증암호, 디지털서명 등에 사용한다.
md5나, sha256이나 대강 살펴보면
입력값이받아서
base64처럼 적당한 블록단위로 쪼개고,
부족한부분은 패딩으로 채운뒤에
블록단위로 base64보다 훨씬 복잡하게 계산하는방식이다.
그리고 그 복잡도에 따라 명칭이 다르며
안정성도 역시 다를것이다.
이제 md5는 쓰지 말란다.
이미 털렸다고.
알고리즘은 굉장히 복잡하지만,
개발자가 갖다 쓰기에는 무척 간편하다.
고정된 길이의 해쉬값을 출력하는 함수
md5를 사용했을때의 결과는 다음과 같다.
입력값이 "1"일때
-> c4ca4238a0b923820dcc509a6f75849b
입력값이 "adbklakdjrlyjlkwejlgkjsrjitpjhopeeojlkajslkdjfkjaskdfjglkdsjflkhawkejrpy pasjglkajerlkjylkajsdlkfjlkasjdptggowrjytsjdllqqweqwe" 일때
-> cd274b08e463c7ef783bc659f8f8b6b2
입력값의 길이의상관없이 문자의 길이는 32자이다. (md5 테스트 : http://www.danstools.com/md5-hash-generator/ )
사용목적
보안을 위해
수신측이 입력값을 알지못해도
보내는 시점과 받는 시점의 해시값을 비교하고,
만약 그값이 동일하다면,
이값은 변조가 없었다. 라는 판단을 하는것이 목적
인증암호, 디지털서명 등에 사용한다.
md5나, sha256이나 대강 살펴보면
입력값이받아서
base64처럼 적당한 블록단위로 쪼개고,
부족한부분은 패딩으로 채운뒤에
블록단위로 base64보다 훨씬 복잡하게 계산하는방식이다.
그리고 그 복잡도에 따라 명칭이 다르며
안정성도 역시 다를것이다.
이제 md5는 쓰지 말란다.
이미 털렸다고.
알고리즘은 굉장히 복잡하지만,
개발자가 갖다 쓰기에는 무척 간편하다.
Algorithm and variant | Output size (bits) |
Internal state size (bits) |
Block size (bits) |
Max message size (bits) |
Rounds | Operations | Security (bits) |
Example Performance[31] (MiB/s) |
|
---|---|---|---|---|---|---|---|---|---|
MD5 (as reference) | 128 | 128 (4 × 32) |
512 | 264 − 1 | 64 | And, Xor, Rot, Add (mod 232), Or |
<64 (collisions found) |
335 | |
SHA-0 | 160 | 160 (5 × 32) |
512 | 264 − 1 | 80 | And, Xor, Rot, Add (mod 232), Or |
<80 (collisions found) |
- | |
SHA-1 | 160 | 160 (5 × 32) |
512 | 264 − 1 | 80 | <80 (theoretical attack[32] in 261) |
192 | ||
SHA-2 | SHA-224 SHA-256 |
224 256 |
256 (8 × 32) |
512 | 264 − 1 | 64 | And, Xor, Rot, Add (mod 232), Or, Shr |
112 128 |
139 |
SHA-384 SHA-512 SHA-512/224 SHA-512/256 |
384 512 224 256 |
512 (8 × 64) |
1024 | 2128 − 1 | 80 | And, Xor, Rot, Add (mod 264), Or, Shr |
192 256 112 128 |
154 | |
SHA-3 | SHA3-224 SHA3-256 SHA3-384 SHA3-512 |
224 256 384 512 |
1600 (5 × 5 × 64) |
1152 1088 832 576 |
Unlimited | 24 | And, Xor, Rot, Not |
112 128 192 256 |
- |
SHAKE128 SHAKE256 |
d (arbitrary) d (arbitrary) |
1344 1088 |
min (d/2, 128) min (d/2, 256) |
- |
작성자가 댓글을 삭제했습니다.
답글삭제님 감사한 자료입니다.
답글삭제질문이 있습니다.
위에 입력값의 길이의상관없이 문자의 길이는 32자이다.
라고 적혀있는데요.
md5의 결과값은 128비트인데, 128비트는 16바이트이지 않습니깡?
16바이트면 16글자여야 하는것 아닌가요?
저도 "1"을 입력햇더니 님과 같은 32글자는 나오는데...
이게 왜 16글자가 아니라 32글자가 나오는질 이해하고 싶은데 모르겠네요...