C#에서 SHA256으로 문자열 해시

Muhammad Zeeshan 2023년10월12일
C#에서 SHA256으로 문자열 해시

다음 기사에서는 C# 프로그래밍 언어에서 sha256 알고리즘을 사용하여 문자열을 해시하는 방법을 배웁니다.

암호화에서 해싱은 불확실한 길이의 이진 문자열을 정의된 길이의 짧은 이진 문자열로 매핑하는 방법을 말합니다. 이 짧은 이진 문자열을 해시라고 합니다.

해시 함수는 해싱의 또 다른 이름입니다. 암호 및 디지털 인증서와 같은 기밀 정보를 무단 액세스로부터 보호하기 위해 해시 함수를 사용하는 것이 표준 관행입니다.

C#에서 SHA256으로 문자열 해시

sha256을 사용하여 문자열을 해시하는 방법을 더 잘 설명하려면 다음 예제를 참조하십시오.

시작하려면 다음 라이브러리를 가져옵니다.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Security.Cryptography;

먼저 사용자 입력을 해시 출력으로 변환하는 HashWithSha256이라는 함수를 만듭니다. 이 함수는 사용자 입력을 매개변수로 사용합니다.

static string HashWithSha256(string ActualData) {}

SHA256 해시를 얻기 위해 SHA256 클래스를 활용합니다. 먼저 .Create() 메서드를 사용하여 SHA256 해시 객체를 생성해야 합니다.

using (SHA256 s = SHA256.Create()) {}

그런 다음 Encoding.GetBytes() 함수를 사용하여 제공된 문자열을 byte 배열로 변환합니다.

byte[] bytes = s.ComputeHash(Encoding.UTF8.GetBytes(ActualData));

StringBuilder를 활용하여 byte 배열을 string으로 변환합니다.

StringBuilder b = new StringBuilder();
for (int i = 0; i < bytes.Length; i++) {
  b.Append(bytes[i].ToString("x2"));
}

변환하려는 문자열을 구성하여 시작하겠습니다.

string s1 = "Muhammad Zeeshan";
Console.WriteLine("User Input: {0}", s1);

마지막으로 입력 문자열의 출력을 HashWithSha256 함수에 매개변수로 제공한 후 로컬 변수 HashString에 저장해야 합니다.

string HashString = HashWithSha256(s1);
Console.WriteLine("Hash Output: {0}", HashString);
Console.ReadLine();

완전한 소스 코드:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Security.Cryptography;

namespace HashStringByZeeshan {
  class Program {
    static void Main(string[] args) {
      string s1 = "Muhammad Zeeshan";
      Console.WriteLine("User Input: {0}", s1);
      string HashString = HashWithSha256(s1);
      Console.WriteLine("Hash Output: {0}", HashString);
      Console.ReadLine();
    }

    static string HashWithSha256(string ActualData) {
      using (SHA256 s = SHA256.Create()) {
        byte[] bytes = s.ComputeHash(Encoding.UTF8.GetBytes(ActualData));
        StringBuilder b = new StringBuilder();
        for (int i = 0; i < bytes.Length; i++) {
          b.Append(bytes[i].ToString("x2"));
        }
        return b.ToString();
      }
    }
  }
}

출력:

User Input: Muhammad Zeeshan
Hash Output: b77387c5681141bfb72428c7ee23b67ce1bc08f976954368fa9cab070ffb837b
Muhammad Zeeshan avatar Muhammad Zeeshan avatar

I have been working as a Flutter app developer for a year now. Firebase and SQLite have been crucial in the development of my android apps. I have experience with C#, Windows Form Based C#, C, Java, PHP on WampServer, and HTML/CSS on MYSQL, and I have authored articles on their theory and issue solving. I'm a senior in an undergraduate program for a bachelor's degree in Information Technology.

LinkedIn