強火で進め

このブログではプログラム関連の記事を中心に書いてます。

Unity で SHA1(メッセージダイジェスト) を生成する方法

まずは検証用のデータを PHP で作成。以下のコマンドを実行。

php -r 'echo sha1("apple")."\n";'

結果はこちらは

d0be2dc421be4fcd0172e5afceea3970e2f3d940

C# でのサンプル】
※バイナリのままだと画面に表示出来ないのでBASE64に変更しています。

using UnityEngine;
using System.Collections;
using System.Text;
using System.Security.Cryptography;

public class MyGUI : MonoBehaviour {
	string txt = "";
	
	void OnGUI () {
		GUI.TextField(new Rect(10, 10, 400, 50), txt);
		if (GUI.Button(new Rect(10, 70, 200, 100), "convert")) {
			SHA1 sha = new SHA1CryptoServiceProvider();
			UTF8Encoding ue = new UTF8Encoding();
			byte[] planeBytes = ue.GetBytes("apple");
			byte[] hashBytes = sha.ComputeHash(planeBytes);
			string hashStr = "";
			foreach(byte b in hashBytes) {
				hashStr += string.Format("{0,0:x2}", b);
			}
			txt = hashStr;
		}
	}
}

実行した所、 console に表示された文字は d0be2dc421be4fcd0172e5afceea3970e2f3d940 。正しく、 SHA1 でハッシュ化された値が取得できました。

関連情報

Unity で SHA256 を使う方法 - 強火で進め
http://d.hatena.ne.jp/nakamura001/20120928/1348841124