MD4 해시 코드 계산기
게시됨: 2025년 2월 16일 오후 10시 52분 22초 UTC
마지막으로 업데이트되었습니다: 2026년 1월 12일 오전 9시 7분 37초 UTC
MD4 Hash Code Calculator
MD4(Message Digest 4)는 1990년 Ronald Rivest가 설계한 암호화 해시 함수입니다. 임의의 길이의 입력으로부터 고정된 128비트(16바이트) 해시 값을 생성합니다. MD4는 충돌 공격(동일한 해시 값을 생성하는 두 개의 서로 다른 입력을 찾는 공격)을 허용하는 취약점 때문에 현재 암호학적으로 안전하지 않은 것으로 간주되므로 새로운 시스템을 설계할 때는 사용해서는 안 됩니다. 하지만 하위 호환성을 유지하는 해시 코드를 생성해야 하는 경우를 대비하여 여기에 포함시켰습니다.
전체 공개: 이 페이지에서 사용된 해시 함수의 구체적인 구현은 제가 직접 작성하지 않았습니다. PHP 프로그래밍 언어에 포함된 표준 함수입니다. 편의를 위해 웹 인터페이스만 공개하여 여기에서 사용할 수 있도록 만들었습니다.
MD4 해시 알고리즘에 대하여
저는 수학자가 아니므로, 수학에 익숙하지 않은 분들도 이해하기 쉽게 해시 함수를 설명해 보겠습니다 ;-) 수학적인 설명을 선호하시는 분들은 다른 웹사이트에서 찾아보실 수 있습니다.
MD4를 특수한 문서 파쇄기라고 생각해 보세요. 하지만 종이를 파쇄하는 대신, 편지, 비밀번호, 책과 같은 모든 메시지를 작고 일정한 크기의 영수증으로 "파쇄"합니다. 메시지의 크기가 크든 작든 상관없이, 이 파쇄기는 항상 정확히 16바이트(128비트), 즉 16진수로 32자 길이의 작은 영수증을 만들어냅니다.
메시지를 제대로 파쇄하려면 다음 네 단계를 거쳐야 합니다.
1단계: 메시지 준비
- 종이를 파쇄하기 전에 파쇄기에 딱 맞도록 종이를 정리해야 합니다.
- 메시지가 너무 짧으면 빈 공간(낙서나 여백을 채우는 용도)을 추가하여 용지에 딱 맞게 넣습니다.
- 내용이 너무 길면 같은 크기의 여러 페이지로 나눕니다.
2단계: 비밀 스탬프 추가하기
- 메시지를 수정한 후에는 원래 메시지의 길이가 얼마였는지 알려주는 비밀 스탬프를 끝에 추가합니다.
- 이렇게 하면 파쇄기가 사용자가 얼마나 많은 내용을 추가했는지에 관계없이 메시지의 원래 크기를 추적할 수 있습니다.
3단계: 분쇄 과정 (3단계의 마법)
- 이제 그 메시지는 파쇄기로 들어갑니다.
- 분쇄기는 특수한 패턴으로 함께 회전하는 4개의 기어(A, B, C, D)를 가지고 있습니다.
- 톱니바퀴는 세 번의 회전 과정을 거치면서 다음과 같은 동작을 합니다. 단어들을 섞고, 일부 부분을 뒤집고, 루빅 큐브처럼 돌리고, 서로 다른 조각들을 부딪칩니다.
- 각 단계를 거칠수록 메시지는 점점 더 알아볼 수 없을 정도로 뒤죽박죽이 되어간다.
4단계: 최종 영수증
- 온갖 회전과 뒤집기, 파쇄 과정을 거친 후, 파쇄기는 영수증, 즉 짧은 숫자와 문자의 조합(해시값)을 내뱉습니다.
- 이 영수증은 단어 하나만 갈기갈기 찢어도 책 한 권을 통째로 갈기갈기 찢어도 길이가 항상 똑같습니다!
하지만 안타깝게도 시간이 흐르면서 사람들은 이 마법 같은 파쇄기가 완벽하지 않다는 사실을 발견했습니다. 몇몇 영리한 사람들은 파쇄기를 속여 서로 다른 두 메시지에 대해 동일한 영수증을 발행하게 만드는 방법(이를 충돌이라고 합니다)과 기어가 어떻게 회전할지 예측하여 가짜 영수증을 만드는 방법을 알아냈습니다. 이 때문에 MD4는 더 이상 중요한 정보를 저장하는 데 안전한 암호화 방식으로 여겨지지 않습니다.
추가 자료
이 글이 마음에 드셨다면 다음 제안도 마음에 드실 겁니다.
