C#의 문자열에서 MD5 해시 계산
해싱 알고리즘
은 임의의 입력 데이터를 고정 크기 해시에 매핑하는 데 사용되는 수학적 알고리즘입니다. 해시 맵
, 비밀번호 확인
, 메시지 소화
및 암호화폐 보안
과 같은 데이터 구조에 데이터를 저장하는 것과 같은 여러 목적으로 사용됩니다.
MD5
는 해싱 알고리즘의 메시지 다이제스트 클래스에 속합니다. Rivest는 MD5
및 MD2
, MD4
등과 같은 기타 알고리즘을 개발했습니다.
이 알고리즘은 원래 디지털 서명을 인증하도록 설계되었습니다. 그러나 나중에 더 이상 사용되지 않는 많은 취약점이 발견되었습니다.
그럼에도 불구하고 여전히 데이터 무결성 검증에 사용되며 고급 알고리즘을 이해하기 위한 기반을 형성합니다. MD5
알고리즘은 모든 메시지 소화 알고리즘과 마찬가지로 길이를 알 수 없는 메시지를 입력으로 받아 고정 크기 해시로 변환합니다.
입력 문자열을 약간 변경하면 완전히 다른 해시가 생성됩니다. 이 기사에서는 C#
을 사용하여 MD5
해시를 계산하는 방법을 배웁니다.
C#
에서 MD5
알고리즘 사용
MD5 알고리즘은 다음 네 가지 주요 단계로 구성됩니다.
먼저 패딩 비트를 추가합니다.
이 단계에서 패딩 비트를 추가하여 총 비트 수가 512
의 가장 가까운 배수보다 64
가 되도록 합니다. 알고리즘이 512
비트 크기의 데이터를 처리할 수 있도록 하고 2
단계에서 64
비트로 표현된 문자열의 길이를 추가하여 512
의 짝수 배수를 얻습니다.
둘째, 길이 비트를 추가합니다.
64
비트로 문자열의 길이를 계산합니다. 단계 1
에서 형성된 출력에 추가하십시오.
셋째, MD 버퍼를 초기화합니다.
A
, B
, C
, D
라는 32
비트의 4
메시지 다이제스트 버퍼를 초기화합니다. 그것들은 다음과 같습니다:
A = 01 23 45 67
B = 89 ab cd ef
C = fe dc ba 98
D = 76 54 32 10
네 번째는 개별 512
비트 블록의 처리입니다.
전체 비트는 512
크기의 블록으로 나뉩니다. 형성된 각 블록은 32
비트의 16
하위 블록으로 나뉩니다. 형성된 모든 16
블록은 A
, B
, C
및 D
버퍼를 사용하여 일련의 4
작업을 통해 전달되어 최종 해시를 제공합니다.
System.Security.Cryptography
라이브러리를 사용하여 C# 문자열에서 MD5 해시 계산
using System;
using System.Security.Cryptography;
using System.Text;
public class Test {
public static string ComputeMd5Hash(string message) {
using (MD5 md5 = MD5.Create()) {
byte[] input = Encoding.ASCII.GetBytes(message);
byte[] hash = md5.ComputeHash(input);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < hash.Length; i++) {
sb.Append(hash[i].ToString("X2"));
}
return sb.ToString();
}
}
public static void Main() {
string message = "Welcome to DelfStack";
Console.WriteLine(ComputeMd5Hash(message));
}
}
출력:
53C62733BB54F2B720A32490E6C447FF
위의 프로그램에서 ComputeHash()
메서드를 통해 md5
알고리즘의 기성 구현을 제공하는 C#
에 있는 MD5
클래스의 개체를 만듭니다.
ComputeHash()
메서드의 함수 서명과 일치하도록 메시지 문자열을 바이트 스트림
으로 변환한 다음 바이트 스트림
형식으로 결과를 반환합니다. 그런 다음 문자열 빌더 클래스를 사용하여 바이트 스트림을 유효한 C#
문자열로 변환합니다.
Harshit Jindal has done his Bachelors in Computer Science Engineering(2021) from DTU. He has always been a problem solver and now turned that into his profession. Currently working at M365 Cloud Security team(Torus) on Cloud Security Services and Datacenter Buildout Automation.
LinkedIn