본문 바로가기

wargame/기타

[HASH]MD5

MD5

MD5는 임의의 길이의 메시지를 입력 받아, 128비트 고정 길이의 출력값을 내는 128비트 암호화 해시 함수이다. 현재는 MD5 알고리즘을 보안 관련 용도로 쓰는 것을 권장하지 않는다.

MD5 인코딩 과정

입력 메시지는 512비트 블록들로 쪼개진다. 그 과정은 다음과 같다. 우선, 첫 단일 비트, 1을 메시지 끝부분을 추가하고 512의 배수의 길이보다 64비트 적은 곳까지 0으로 채운다. 나머지 64비트는 원래 입력 받았던 메시지의 길이를 나타내는 64비트 정수값으로 채워진다.
메인 알고리즘은 A, B, C, D라는 32비트 워드 네 개로 이루어진 하나의 128 비트 스테이트(STATE)에 대해 동작한다. A, B, C, D는 임의의 상수 값으로 초기화된다. 메인 알고리즘은 각각의 512비트짜리 입력 메시지 볼록에 대해 차례로 동작한다. 각 512비트 입력 메시지 블록을 처리하면 128 비트 스테이트의 값이 변하게 된다.
하나의 메시지 블록을 처리하는 것은 4단계로 나뉜다. 각 단계를 round라고 부르며, 각 라운드는 비선형 함수 F, 모듈라 덧셈, left rotation에 기반한 16개의 similar operations으로 이루어져 있다.

단일 MD5 연산

'wargame > 기타' 카테고리의 다른 글

Base64, MD5, SHA 비교  (0) 2019.04.08
[HASH]SHA 함수군  (0) 2019.04.05
[암호]Base64  (0) 2019.04.05