MD5는 128 비트인데 왜 32 자입니까?
md5에 대한 문서를 읽었는데 128 비트라고했는데 왜 32 자입니까? 문자를 계산할 수 없습니다.
- 1 바이트는 8 비트입니다.
- 1 문자가 1 바이트 인 경우
- 128 비트는 128/8 = 16 바이트 맞죠?
편집하다:
SHA-1은 160 비트를 생성하는데 몇 개의 문자가 있습니까?
16 진수 표현으로 32 자, 즉 바이트 당 2 자입니다.
일부 답변을 하나의 게시물로 정리하고 싶었습니다.
먼저 MD5 해시를 문자열이 아니라 16 진수로 생각하십시오. 따라서 각 숫자는 16 진수 (0-15 또는 0-F)이며 8이 아닌 4 비트를 나타냅니다.
더 나아가 1 바이트 또는 8 비트는 2 개의 16 진수 숫자로 표시됩니다 (예 : b ' 1111 1111
'= 0xFF
=) 255
.
MD5 해시는 길이가 128 비트이며 일반적으로 32 개의 16 진수로 표시됩니다.
SHA-1 해시는 길이가 160 비트이며 일반적으로 40 개의 16 진수로 표시됩니다.
SHA-2 제품군의 경우 해시 길이가 미리 결정된 집합 중 하나 일 수 있다고 생각합니다. 따라서 SHA-512는 128 개의 16 진수로 나타낼 수 있습니다.
다시 말하지만이 게시물은 이전 답변을 기반으로합니다.
16 진수 "문자"(니블)는 "문자"와 다릅니다.
비트 대 바이트, 문자에 대해 명확하게.
- 1 바이트는 8 비트입니다.
- 8 비트는
2**8
가능한 조합을 제공 합니다 : 256 개의 조합
16 진수 문자 를 보면
- 16 가지 조합
[0-9] + [a-f]
: 전체 범위0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f
- 16은 256보다 작으므로 하나의 16 진 문자는 바이트를 저장 하지 않습니다 .
- 16은
2**4
하나의 16 진수 문자가 한 바이트 (반 바이트)에 4 비트를 저장할 수 있음을 의미합니다. - 따라서 두 개의 16 진수 문자는 8 비트
2**8
조합을 저장할 수 있습니다 . - 16 진수 문자로 표현 된 바이트는
[0-9a-f][0-9a-f]
이고 이는 바이트의 절반을 모두 나타냅니다 (우리는 절반 바이트를 니블 이라고 부릅니다 ).
일반 1 바이트 문자 를 볼 때 (여기서는 멀티 바이트 및 와이드 문자를 완전히 건너 뛸 것입니다)
- 16 개 이상의 조합을 저장할 수 있습니다.
- 문자 의 기능은 인코딩에 의해 결정됩니다 . 예를 들어, 전체 바이트를 저장하는 ISO 8859-1은이 모든 것을 저장합니다.
- 그 모든 것이 전체
2**8
범위를 차지합니다 . - 의 16 진수 문자가
md5()
모든 것을 저장할 수 있다면 모든 소문자, 모든 대문자, 모든 구두점 및¡°ÀÐàð
, 같은 공백 (줄 바꿈 및 탭), 제어 문자 (할 수 있음)를 볼 수 있습니다. t는 보거나 많이 사용하지 않습니다).
그래서 그들은 분명히 다르며 차이점을 가장 잘 분석 할 수 있기를 바랍니다.
MD5는 16 진수 (0-15 / 0-F)를 산출하므로 각각 4 비트입니다. 128/4 = 32 자.
SHA-1도 16 진수 (0-15 / 0-F)를 생성하므로 160/4 = 40 자입니다.
(수학적 연산이므로 대부분의 해싱 함수의 출력은 일반적으로 16 진수로 표시됩니다.)
아마도 8 비트 인 ASCII 텍스트 문자를 생각하고 계실 것입니다.
32 개의 16 진수 문자입니다. 1 개의 16 진수 문자는 4 비트입니다.
문자가 아닌 16 진수입니다. 한 자리 = 4 비트.
실제로 문자가 아니라 16 진수입니다.
16 진수 1 개 = 니블 1 개 (4 비트)
두 16 진수 = 1 바이트 (8 비트)
MD5 = 16 진수 32 자리
16 진수 32 자리 = 16 바이트 (32/2)
16 바이트 = 128 비트 (16 * 8)
SHA-1에도 동일하게 적용됩니다. 단 40 자리 16 진수입니다.
이게 도움이 되길 바란다.
참고 URL : https://stackoverflow.com/questions/6317276/md5-is-128-bits-but-why-is-it-32-characters
'developer tip' 카테고리의 다른 글
UI-Router를 사용하여 상위 상태로 전환 할 때 사용자를 하위 상태로 안내 (0) | 2020.10.16 |
---|---|
보기 쪽이 아닌 목록 개체 템플릿 쪽을 어떻게 제한합니까? (0) | 2020.10.16 |
자바 스크립트를 사용하여 인라인 스타일 추가 (0) | 2020.10.16 |
RecyclerView의 행 내부에서 버튼 클릭 처리 (0) | 2020.10.16 |
JavaScript : 문자열에서 마지막 텍스트 교체 (0) | 2020.10.16 |