強火で進め

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

Unity で SHA256 を使う方法

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

php -r 'echo hash_hmac("sha256", "apple", "secret_key")."\n";'

結果はこちらは

ba6b88d8c49940b6424e053aef2ba049bbae3ed3b44c0cbb74bf5f1e32726b70

Unity でも apple と secret_key を引数にして ba6b88d8c49940b6424e053aef2ba049bbae3ed3b44c0cbb74bf5f1e32726b70 が返って来れば成功です。

プログラムの主な部分はこちら( C# のプログラムです)。

	string sha256(string planeStr, string key) {
		System.Text.UTF8Encoding ue = new System.Text.UTF8Encoding();
		byte[] planeBytes = ue.GetBytes(planeStr);
		byte[] keyBytes = ue.GetBytes(key);
	 
		System.Security.Cryptography.HMACSHA256 sha256 = new System.Security.Cryptography.HMACSHA256(keyBytes);
		byte[] hashBytes = sha256.ComputeHash(planeBytes);
		string hashStr = "";
		foreach(byte b in hashBytes) {
			hashStr += string.Format("{0,0:x2}", b);
		}
		return hashStr;
	}

	void Start () {
		string res = sha256("apple", "secret_key");
		Debug.Log(res);
	}

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

関連情報

MD5 - Unify Community Wiki
http://wiki.unity3d.com/index.php?title=MD5

Unity で SHA1(メッセージダイジェスト) を生成する方法 - 強火で進め
http://d.hatena.ne.jp/nakamura001/20130115/1358265478