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