Compute File Hash(MD5, SHA1, ETC..)

홈 > 공유팁! > 프로그램 관련
프로그램 관련

Compute File Hash(MD5, SHA1, ETC..)

꽁스짱 0 856

Introduction


서버와 통신을 하는 Application 을 개발하다 보면, 필수적으로 사용자가 프로그램을 변조하였는지 확인해야 할 경우가 많습니다. 이 경우 일반적으로 프로그램이 실행될 때, 미리 서버에 등록해 놓은 HASH 값과 비교하여 변조 유무를 판단합니다. 아래 코드는 HASH 값을 추출하기 위한 Sample 코드입니다.


Using the code 


using System.IO;

using System.Security.Cryptography;

public static class FileHashUtil

{

    /// <summary>

    /// 파일로부터 MD5 Hash를 생성합니다.

    /// </summary>

    /// <param name="FilePath">파일 경로</param>

    /// <returns>MD5 Hash 문자열</returns>

    public static string ComputeMD5Hash(string FilePath)

    {

        return ComputeHash(FilePath, new MD5CryptoServiceProvider());

    }

    /// <summary>

    /// 파일로부터 SHA1 Hash를 생성합니다.

    /// </summary>

    /// <param name="FilePath">파일 경로</param>

    /// <returns>SHA1 Hash 문자열</returns>

    public static string ComputeSHA1Hash(string FilePath)

    {

        return ComputeHash(FilePath, new SHA1CryptoServiceProvider());

    }

    /// <summary>

    /// 파일로부터 입력받은 알고리즘으로 Hash를 생성합니다.

    /// </summary>

    /// <param name="FilePath">파일 경로</param>

    /// <param name="Algorithm">Hash 알고리즘</param>

    /// <returns>Hash 문자열</returns>

    public static string ComputeHash(string FilePath, HashAlgorithm Algorithm)

    {

        FileStream FileStream = File.OpenRead(FilePath);

        try

        {

            byte[] HashResult = Algorithm.ComputeHash(FileStream);

            string ResultString = BitConverter.ToString(HashResult).Replace("-", "");

            return ResultString;

        }

        finally

        {

            FileStream.Close();

        }

    }

}


Comment

MD5, SHA1 등 과 같이 기본적으로 제공하는 알고리즘 이외에도 HashAlgorithm 상속받는 객체를 이용하여 HASH 값을 구할 수 있습니다


0 Comments
제목