공통 해쉬 알고리즘의 종류

황제낙엽 2009.12.01 15:18 조회 수 : 2498 추천:106

대표적으로 MD5, SHA1, RMD160, TIGER 등이 많이 쓰인다.

- SNEFRU

1990년 R.C. Merkle에 의해 제안됬다. 128/254 bit 암호화 알고리즘

- N-HASH

1989년 일본 NTT의 미야구치 등이 발표했다.

- MD4

1990년 Ron Rivest에 의해 개발된 MD5의 초기 버전으로서, 입력 데이터(길이에 상관없는 하나의 메시지)로부터 128비트 메시지

축약을 만듦으로써 데이터 무결성을 검증하는데 사용되는 알고리즘이다.

[참고] MD4의 설계 원칙

1) 수학적인 가정 없이 안전한 해쉬함수를 설계한다.

2) 해쉬함수의 수행속도는 가능한 빨라야 한다. 특히, 소프트웨어로 구현했을 때의 속도를 고려한다.

3) 알고리즘은 단순하며 구현이 용이해야한다.

4) little-endian 구조(word의 최하위 바이트가 low-address 바이트 위치에 있는구조)를 고려한 알고리즘을

설계한다.

- MD5

1992년 Ron Rivest에 의해 개발. MD5는 널리 사용된 해쉬 알고리즘이지만, 충돌 회피성에서 문제점 이 있다는 분석이 있으므로

기존의 응용과의 호환으로만 사용하고 더 이상 사용하지 않도록 하고 있다.

[참고] MD4와 MD5의 차이

1) MD4는 16단계의 3라운드를 사용하나 MD5는 16단계의 4라운드를 사용한다.

2) MD4는 각 라운드에서 한번씩 3개의 기약함수를 사용한다. 그러나 MD5는 각 라운드에서 한번 씩 4개의

기약 논리 함수를 사용한다.

3) MD4는 마지막 단계의 부가를 포함하지 않지만, MD5의 각 단계는 이전 단계의 결과에 부가된다.

?

- SHA(Secure Hash Algorithm)

1993년에 미국 NIST에 의해 개발되었고 가장 많이 사용되고 있는 방식이다.

SHA1은 DSA에서 사용하도록 되어 있으며 많은 인터넷 응용에서 default 해쉬 알고리즘으로 사용된다. SHA256, SHA384, SHA512

는 AES의 키 길이인 128, 192, 256 비트에 대응하도록 출력 길이를 늘인 해쉬알고리즘이다.

- RMD

RMD128, RMD160는 RIPE 프로젝트의 RIPEMD나 MD4, MD5를 대신하기 위하여 디자인된 해쉬 알 고리즘이다. 128 비트의 출력을

내는 RMD128은 역시 충돌 회피성에서 문제점이 있다. RMD160은 효 율성은 떨어지지만 안전성을 높인 것으로 많은 인터넷 표준들

에서 널리 채택되고 있다. RMD256과 RMD320은 각각 RMD128과 RMD160을 확장한 것이다.

- TIGER

TIGER는 64 비트 프로세서에 최적화되어서 64 비트 프로세서에서는 매우 빠르다.

알고리즘

출력길이

블럭의 크기

라운드 수

Endianness

MD5

128

512

64

Little

SHA1

160

512

80

Big

SHA256

256

512

64

Big

SHA384

384

1024

80

Big

SHA512

512

1024

80

Big

RMD128

128

512

128

Little

RMD160

160

512

160

Little

RMD256

256

512

128

Little

RMD320

320

512

160

Little

HAS160

160

512

80

Little

TIGER

192

512

56

Little

[표 ] 해쉬 알고리즘 종류 비교

번호 제목 글쓴이 날짜 조회 수
공지 [계속 추가중] SBOM 용어 정의 황제낙엽 2025.04.10 21564
공지 [계속 추가중] Keycloak 용어 및 설정 옵션 정의 황제낙엽 2024.02.02 20404
146 SPDX 2.3, 계속 써도 되나요? — 3.0으로 넘어갈 때를 판단하는 실무 기준 황제낙엽 2026.08.11 54
145 같은 OSS 지만 여러 버전을 등록해야 하는 경우 황제낙엽 2026.04.24 1972
144 [FOSSLight Dependency Scanner] Android Project 의 Dependency Scan 을 위한 Android SDK 설치와 설정 황제낙엽 2026.04.23 1843
143 FOSSLight Hub 의 REST API 이용 (v2) 황제낙엽 2026.03.19 2500
142 [FOSSLight/검토용] 개발그룹의 sbom-info.yaml 분석 및 피드백 절차 황제낙엽 2026.03.16 1982
141 [FOSSLight/관리용] Project Identification 진행에서 최종 SBOM SPDX 문서 추출 황제낙엽 2026.02.09 1916
140 [FOSSLight] 'Download Location' 컬럼 값에 'Different from DB' 라는 푸른색 메세지가 출력 file 황제낙엽 2026.02.06 3612
139 [FOSSLight] Project Identification 진행시의 신규 OSS 등록 처리 방법 황제낙엽 2026.02.06 3750
138 [FOSSLight Hub] License 정보를 직접 등록시 필요한 항목 목록 황제낙엽 2026.02.06 3579
137 [FOSSLight Hub] Open Source 정보를 직접 등록시 필요한 항목 목록 황제낙엽 2026.02.06 3352
136 [OSS] Microsoft.Web.WebView2 황제낙엽 2026.02.06 3351
135 [FOSSLight] fosslight 프로젝트의 'Pre-Review' > 'Open Source' 팝업창의 세 버튼에 대한 용도 황제낙엽 2026.02.06 3572
134 [FOSSLight/검토용] prechecker convert 결과 Hub 등록후 Identification 처리 file 황제낙엽 2026.02.05 3288
133 python venv 설치, fosslight source scanner , binary scanner 설치, 버전 확인 황제낙엽 2026.02.02 3507
132 SPDX 템플릿 다운로드 및 온라인 변환기 황제낙엽 2026.01.22 3868
131 SBOM(Software Bill of Materials) 및 소프트웨어 공급망 보안 관련 주요 정부 기관 및 단체 황제낙엽 2026.01.22 3605
130 [FOSSLight] online guide link 황제낙엽 2026.01.14 1844
129 identification 에서 출력하는 warning, error 메세지 황제낙엽 2025.12.29 1427
128 sbom-info.yaml 을 이용한 dependency scan excel 작성 file 황제낙엽 2025.12.29 3578
127 binary scan 결과물에 대해 취약점이 없는데 왜 SBOM에 넣어야 하나? 황제낙엽 2025.12.17 3484