본문 바로가기
cs

[알고리즘] MD5 해시 알고리즘 이란?

by 최연탄 2023. 3. 13.
728x90
반응형

참고: https://www.avast.com/c-md5-hashing-algorithm

자바스크립트 MD5 해시 생성하기

MD5 란?

MD5 (message-digest algorithm)는 콘텐츠 검증 및 디지털 서명뿐만 아니라 메시지 인증에 사용되는 해시 알고리즘입니다. MD5는 보낸 파일과 받은 파일이 일치하는지 확인하는 해시 함수를 기반으로 합니다. 이전에는 MD5가 데이터 암호화에 사용되었지만, 현재는 주로 인증에 사용됩니다.

MD5는 어떻게 작동하는가?

MD5는 수학적 해시 알고리즘을 통해 전체 파일을 읽어 원본 파일과 일치하는 서명을 생성합니다. 이렇게 하면 수신된 파일이 전송된 원본 파일과 일치하는지 인증할 수 있으므로 올바른 파일이 필요한 위치에 있는지 확인할 수 있습니다.

MD5 해시 알고리즘은 데이터를 32자의 문자열로 변환합니다. 예를 들어 "frog"라는 단어는 항상 "938c2cc0dcc05f2b68c4287040cfcf71"로 해시를 생성합니다. 마찬가지로 1.2GB의 파일도 같은 수의 문자로 해시를 생성합니다. 해당 파일을 다른 사람에게 보내면 해당 컴퓨터는 해시를 인증하여 보낸 파일과 일치하는지 확인합니다.

파일의 1비트만 변경되어도 파일의 크기에 관계없이 해시 출력이 완전히 변경됩니다. 정확한 사본이 있다면 MD5 테스트를 통과할 수 있습니다.

MD5는 무엇에 사용되는지?

MD5는 주로 파일을 인증하는 데 사용됩니다. MD5 해시를 사용하여 파일 복사본을 원본과 비교하는 것이 두 복사본의 데이터를 일일이 확인하는 것보다 훨씬 쉽습니다.

MD5는 한때 데이터 보안 및 암호화에 사용되었지만, 요즘에는 주로 인증에 사용됩니다. 해커는 완전히 다른 내용으로 동일한 해시를 가진 파일을 만들어낼 수 있기 때문에 누군가가 파일을 변조할 경우 MD5는 안전하지 않습니다. 그러나 단순히 한 위치에서 다른 위치로 파일을 복사하는 경우 MD5가 적합합니다.

MD5는 더 이상 암호화 목적으로 사용되지 않으므로 파일을 보호하고자 할 때 암호화 소프트웨어를 구하거나 라우터 설정에서 WiFi 암호화를 켜는 방법을 배우는 것이 좋습니다.

MD5 해시 계산 방법

MD5 해싱 알고리즘은 복잡한 수학 공식을 사용하여 해시를 생성합니다. 데이터를 특정 크기의 블록으로 변환하고 해당 데이터를 여러 번 조작합니다. 여기서 알고리즘은 계산에 고유한 값을 추가하고 결과를 작은 서명 또는 해시로 변환합니다.

MD5 알고리즘의 각 단계가 복잡한데에는 이유가 있습니다. 한번 실행되면 이 프로세스를 되돌릴 수 없으며 해시에서 원본 파일을 생성해낼 수 없게 해야하기 때문입니다. 그러나 동일한 입력 값은 MD5 sum, hash 또는 checksum 이라고도 하는 동일한 출력을 항상 생성합니다. 이것이 데이터 검증에 유용하게 쓰이는 이유입니다.

MD5의 해시 예는 다음과 같습니다. 0cc175b9c0f1b6a831c399e269772661. 이는 문자 "a"의 해시입니다.

하지만 엄청 파워풀한 컴퓨터를 가진 해커는 악성 파일이 무해한 파일과 동일한 해시를 생성하도록 만들 수 있습니다. 따라서 MD5 해시만 믿고 정상이라 생각되는 파일을 받는다면 랜섬웨어나 맬웨어를 받고 있을 수도 있습니다.

이렇게 두 개의 개별 파일이 동일한 해시를 가지는 경우 이를 MD5 collision 이라고 하며 우발적으로 또는 고의로 만들어낼 수 있습니다.

https://www.avast.com/c-md5-hashing-algorithm

MD5 해시는 몇 바이트인지?

MD5 해시는 16바이트입니다. 각 MD5 해시는 32개의 숫자와 문자처럼 보이지만 모두 16진수를 숫자를 문자열로 나타낸 것 뿐이며 각각의 숫자는 4비트를 나타냅니다. 1바이트는 8비트 이므로 MD5 해시의 총 비트 수는 128비트입니다. 2개의 16진수 숫자가 1 바이트를 형성하므로 32개의 16진수 숫자는 16바이트와 같습니다.

MD5 해시 갈아는 항상 128비트로 동일합니다.

원본이 하나의 문자만 가지고 있을 때 이를 32바이트로 만드는 프로세스를 패딩이라고 하며 이는 해시 계산의 일부입니다. 원본 데이터의 길이가 MD5를 계산하는 데 필요한 길이에 못 미치면 512비트의 배수먼큼 패딩을 추가합니다.

관련 글

해시(hash) 알고리즘 이란?

SHA 해시 알고리즘 이란?

HMAC 이란?

자바스크립트 MD5 생성하기

반응형

댓글