文字列のSHA-256を求める - C#
C#で文字列のSHA-256を求めるコードを紹介します。
プログラム例
UI
下図のUIを作成します。フォームにTextBoxを2つ、Buttonを1つ配置します。
コード
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Security.Cryptography;
namespace CalcSHA256
{
public partial class FormMain : Form
{
public FormMain()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
byte[] input = Encoding.ASCII.GetBytes(textBox1.Text);
SHA256 sha = new SHA256CryptoServiceProvider();
byte[] hash_sha256 = sha.ComputeHash(input);
string result = "";
for (int i = 0; i < hash_sha256.Length; i++) {
result = result + string.Format("{0:X2}", hash_sha256[i]);
}
textBox2.Text = result;
}
}
}
解説
ButtonコントロールのClickイベントを実装しています。ボタンクリック後、下記コードにより、テキストボックスに入力された文字列のASCIIコードを取得します。
byte[] input = Encoding.ASCII.GetBytes(textBox1.Text);
SHA256CryptoServiceProvider のインスタンスを作成します。SHA256はSHA256CryptoServiceProviderのインスタンスオブジェクトのComputeHash()メソッドを呼び出して生成します。ComputeHash メソッドの第一引数にハッシュを生成するための入力バイト列を与えます。SHA256ハッシュ値は ComputeHash メソッドの戻りとして返ります。
SHA256 sha = new SHA256CryptoServiceProvider();
byte[] hash_sha256 = sha.ComputeHash(input);
ComuputeHashメソッドにより取得されたSHA256はバイト配列のため、文字列に変換してテキストボックスに表示します。Formatメソッドで "X2" の形式を指定することでbyte型の数値を "00"から"FF"までの文字列に変換できます。
string result = "";
for (int i = 0; i < hash_sha256.Length; i++) {
result = result + string.Format("{0:X2}", hash_sha256[i]);
}
実行結果
上記のプロジェクトを実行します。下図のウィンドウが表示されます。
上部のテキストボックスにSHA256を求める文字列を入力します。入力後[SHA256]ボタンをクリックします。
下部のテキストボックスにSHA256のハッシュ値を16進文字列で表現した文字列が表示されます。
入力文字列を変更して[SHA256]ボタンをクリックすると、表示されるハッシュ値も変化します。
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用