SHA256 の値を取得

(サンプル一覧を表示する)

SHA256 の値を取得するテストをしてみました。

MD5 は、Flash の標準機能では値が取得できませんでしたが、
SHA256 は、Flex 用のクラスを使うことで取得することができます。
Flash の実行画面
SHA256 の値を取得

Flashプレーヤーが入っていないか、JavaScriptが無効になっているようです。

Get Adobe Flash player

SHA256 の値を取得
PHP で同じ文字列の SHA256 ハッシュを取ったもの :
fdb481ea956fdb654afcc327cff9b626966b2abdabc3f3e6dbcb1667a888ed9a

ソースコード

package 
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.text.TextField;
	import flash.text.TextFieldAutoSize;
	import flash.utils.ByteArray;
	import mx.utils.SHA256;
	
	/**
	 * SHA256 の値を取得するサンプル
	 * @author Hikipuro
	 */
	public class Main extends Sprite 
	{
		/**
		 * 結果表示用テキストフィールド
		 */
		private var textField:TextField;
		
		/**
		 * コンストラクタ
		 */
		public function Main():void 
		{
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
		
		/**
		 * 初期化メソッド
		 * @param	e
		 */
		private function init(e:Event = null):void 
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
			// entry point
			
			// テキストフィールドの準備
			textField = new TextField();
			textField.autoSize = TextFieldAutoSize.LEFT;
			textField.width = 300;
			textField.wordWrap = true;
			textField.x = 10;
			textField.y = 10;
			addChild(textField);
			
			// SHA256 ハッシュ値を取得 ----------------------------
			var str:String = "あいうえお";
			
			// いったんバイト配列に変換
			var byteArray:ByteArray = new ByteArray();
			byteArray.writeUTFBytes(str);
			byteArray.position = 0;
			
			// ハッシュ値をテキストフィールドにセット
			var hash:String = SHA256.computeDigest(byteArray);
			textField.text = hash;
		}
		
	}
	
}
		

ちなみに PHP 側は、

$hash = hash('sha256', mb_convert_encoding('あいうえお', 'UTF-8', 'SJIS'));

のように書きました。
FlashDevelop で普通にコードを書くと、文字列のエンコーディングが
UTF-8 になるので、PHP で同じ値を出そうと思ったら
UTF-8 の文字列にする必要があります。
このページのソースコードは SJIS で書かれているので
mb_convert_encoding() を使って、UTF-8 に変換しています。
ソースコードが UTF-8 で保存されている場合は、
mb_convert_encoding() を入れる必要はありません。
また、コンパイル時にエラーが出るかもしれませんが、
Flash 側を SJIS にするようなこともできると思います。

参照

外部リンク