본문 바로가기

C#

C# 암호화 해시(Checksum) 생성과 비교

데이터 무결성을 확인하거나 비밀번호를 안전하게 저장할 때 암호화 해시(Checksum)가 중요합니다. 이번 글에서는 C#에서 해시를 생성하고, 두 해시 값을 비교하는 간단한 방법을 알아봅니다.

1. SHA256 해시 생성

SHA256은 널리 쓰이는 해시 알고리즘 중 하나로, 고정된 256비트 크기의 해시 값을 생성합니다.

using System.Security.Cryptography;
using System.Text;

public static string ComputeSha256Hash(string rawData)
{
    using (SHA256 sha256Hash = SHA256.Create())
    {
        byte[] bytes = sha256Hash.ComputeHash(Encoding.UTF8.GetBytes(rawData));

        var builder = new StringBuilder();
        foreach (byte b in bytes)
        {
            builder.Append(b.ToString("x2"));
        }
        return builder.ToString();
    }
}

2. 해시 값 비교

원본 문자열의 해시와 비교 대상 해시를 생성한 뒤, 문자열로 직접 비교하면 무결성을 검증할 수 있습니다.

bool VerifyHash(string original, string hashToCompare)
{
    string originalHash = ComputeSha256Hash(original);
    return String.Equals(originalHash, hashToCompare, StringComparison.OrdinalIgnoreCase);
}

3. 사용 예시

string data = "Hello World!";
string hash = ComputeSha256Hash(data);

bool isMatch = VerifyHash("Hello World!", hash); // true
bool isMismatch = VerifyHash("Hello", hash); // false

이처럼 C#에서 SHA256 해시를 생성하고 비교하는 방법을 통해 데이터 일치 여부를 안전하게 확인할 수 있습니다.