パスワードを入力する

  SHA256



実行サンプルのリンク

Flex3( 3.0.2 build 2113 ) の SHA256 がまともに動かなかったので、 ここから ダウンロードして実装しました



  デバッグ(トレース)用 SWC(ライブラリ) : debug.swc



↓同じディレクトリに置く場合
  
mxmlc 対象.mxml -library-path+=debug.swc
  

↓別のディレクトリに置く場合( 例: C:\user\flex3\lib )
  
mxmlc 対象.mxml -library-path+=C:\user\flex3\lib\debug.swc
  


HTML 上で動かす場合は、firebug を使用します。

ファイルシステム( C:\user 等 ) を使って IE 上で firebug を動かす場合は、以下のスクリプトを
SWF と同じ場所において実行すると、ローカルでも使えるようになります
  

<JOB>
<SCRIPT
	language="VBScript"
	src="http://homepage2.nifty.com/lightbox/laylaClass.vbs">
</SCRIPT>

<SCRIPT language=VBScript>
' ***********************************************************
' 処理開始
' ***********************************************************
Call laylaFunctionTarget( "http://homepage2.nifty.com/lightbox/" )
Call laylaLoadFunction( "baseFunction.vbs" )

GetFso

str = GetShellDir( &H28 ) & "\Application Data\Macromedia\Flash Player"
str = str & "\#Security"

on error resume next
Fso.CreateFolder(str)
str = str & "\FlashPlayerTrust"
Fso.CreateFolder(str)
on error goto 0

str = str & "\lightbox.cfg"
Call PutTextFile( str, ScriptDir & vbCrLf )

MsgOk("FlashPlayerTrust 構成ファイルを、" & ScriptDir & _
" 用に作成しましたので、" & vbCrLf & "全てのブラウザを閉じて下さい" )

</SCRIPT>
</JOB>
  

AIR の場合は、
C:\Documents and Settings\ユーザー名\mm.cfg に、TraceOutputFileEnable=1 を書く事によって、
C:\Documents and Settings\ユーザー名\Application Data\Macromedia\Flash Player\Logs\flashlog.txt に書き込まれます。

この設定が無ければ、adl ( AIR Debug Launcher ) が実行されたコンソールに出力されますが、
そのままではデータがUTF-8 なので日本語が使えません

コマンドプロンプトの設定で、フォントをMSゴシックにし、chcp 65001 で表示するようになると思います。
( 多少問題はあるようですが )
ADL ( LiveDocs )

C:\user\flex3\lib\lightbox に debug.as を置きます
そして、C:\user\flex3\lib で、以下のバッチファイルを実行します

debug.swc.bat
  
compc -source-path .\ -output debug.swc -include-classes lightbox.debug
  

debug.as
  
package lightbox
{
	import flash.external.*;
	import mx.formatters.*;

	public class debug
	{
		// ***************************************************
		// ログ表示
		// ***************************************************
		public static function firebug(data:Object):void {

			// 日付編集用
			var fmt:DateFormatter = new DateFormatter();

			fmt.formatString = "YYYY/MM/DD HH:NN:SS";
			var logdt:String = fmt.format( new Date );

			try {
				// JavaScript の呼び出し
				ExternalInterface.call(
					"console.log", logdt,
					data+""
				);
			}
			catch (error:Error) {
				trace( logdt + " " + data );
			}

		}

		// ***************************************************
		// 開く( firefox 以外 )
		// ***************************************************
		public static function open():void {
		
			try {
				ExternalInterface.call(
					"console.open"
				);
			}
			catch (error:Error) {
				trace( "AIR で ExternalInterface.call は使用できません" );
			}
		}

	}
}
  





  password.mxml

  
mxmlc password.mxml -library-path+=C:\user\flex3\lib\debug.swc
  

同じディレクトリに、以下のファイルを置きます
( 全て、パーケージ名を削除して無名にしておきます )
1) IHash.as
2) SHABase.as
3) SHA256.as

↓例( IHash.as )
  
/**
 * IHash
 * 
 * An interface for each hash function to implement
 * Copyright (c) 2007 Henri Torgemane
 * 
 * See LICENSE.txt for full license information.
 */
package
{
	import flash.utils.ByteArray;

	public interface IHash
	{
		function getInputSize():uint;
		function getHashSize():uint;
		function hash(src:ByteArray):ByteArray;
		function toString():String;
	}
}
  

ByteArray

password.mxml
  
<?xml version="1.0" encoding="utf-8"?>
<mx:Application
	xmlns:mx="http://www.adobe.com/2006/mxml"
	initialize="initData();"

	paddingLeft="0"
	paddingTop="1"
	paddingBottom="0"
	paddingRight="0"

	backgroundColor="0xFFFFFF"
>

<mx:Script>
<![CDATA[

	import lightbox.*;
	import SHA256;

	private var pass_data:String = "";

	// *********************************************************
	// アプリケーションの初期化
	// *********************************************************
	public function initData():void {

		// メッセージ
		debug.firebug("initData() が実行されました" );
		debug.open();

	}

	// *********************************************************
	// 処理
	// *********************************************************
	public function ActionStart():void {

		// パスワード( そのまま )
		debug.firebug( pass.text );

		var base1:ByteArray = new ByteArray();
 		base1.writeUTFBytes( pass.text );

		var sha:SHA256 = new SHA256();
		var base2:ByteArray;
		base2 = sha.hash(base1);

		debug.firebug( toHex( base2 ) );

	}

	// *********************************************************
	// ByteArray を 16進数文字列表現に変換
	// *********************************************************
	public function toHex( value:ByteArray ):String {

		var len:int = value.length;
		var i:int;
		var ret:String = "";
		var target:int;
		var hex:String;

		value.position = 0;
		for( i = 0; i < len; i++ ) {

			target = value.readUnsignedByte();
			hex = Number(target).toString(16);
			hex = ("00" + hex.toLowerCase()).substr(-2);
			ret += hex;

		}

		return ret;

	}

]]>
</mx:Script>

<mx:HBox>
	<mx:TextInput
		id="pass"
		displayAsPassword="true"
	/>
	<mx:Button
		label="送信"
		click="ActionStart();"
	/>
</mx:HBox>

</mx:Application>
  




  ビルド用スクリプト

※ 赤い部分を自分の環境にあわせて変更します

build.wsf
  
<JOB>
<RESOURCE id="commandList">
<![CDATA[
mode con: cols=120
set PATH=C:\flex3\bin;%PATH%
prompt flex3$G
fcsh
]]>
</RESOURCE>

<OBJECT id="WshShell" progid="WScript.Shell" />
<OBJECT id="Fso" progid="Scripting.FileSystemObject" />

<SCRIPT language=VBScript>
' ***********************************************************
' 処理開始
' ***********************************************************

strPath = WScript.ScriptFullName
Set obj = Fso.GetFile( strPath )
Set obj = obj.ParentFolder
WshShell.CurrentDirectory = obj.Path

aData = Split( GetInline( "commandList" ), vbCrLf )
strCommand = "cmd.exe /k " & aData(0)
For I = 1 to Ubound( aData )
	strCommand = strCommand & "&" & aData(I)
Next
Call WshShell.Run( strCommand, 3 )

' ***********************************************************
' 関数
' ***********************************************************
Function GetInline( strName )

	GetInline = RegTrim( getResource( strName ) ) & vbCrLf

End Function
Function RegTrim( strValue )

	Dim regEx, str

	Set regEx = New RegExp
	regEx.IgnoreCase = True
	regEx.Pattern = "^[ \s]+"
	str = regEx.Replace( strValue, "" )
	regEx.Pattern = "[ \s]+$"
	RegTrim = regEx.Replace( str, "" )

End Function
</SCRIPT>
</JOB>
  



  実行用 HTML

firebug について SWFObject について

この HTML は、SHIFT_JIS です
  
<HTML>
<HEAD>
<META http-equiv="Content-type" content="text/html; charset=Shift_JIS">
<TITLE>デバッグ用</TITLE>
<STYLE type="text/css">
* {
	font-family: "MS Pゴシック";
	font-size: 12px;
}
BODY {
	background-color: white;
	color: black;
}
</STYLE>
<SCRIPT 
	language="javascript"
	type="text/javascript"
	src="http://homepage2.nifty.com/lightbox/firebug/firebug.js">
</SCRIPT>
<SCRIPT 
	language="javascript"
	type="text/javascript"
	src="http://homepage2.nifty.com/lightbox/swfobject.js">
</SCRIPT>
</HEAD>

<!-- *******************************************************
 BODY
******************************************************** -->
<BODY>

<TABLE><TR><TD>
パスワード入力 : 
</TD><TD>
<DIV id="flashcontent" style='display:inline'></DIV>
</TD></TR></TABLE>

<script type="text/javascript">
	var so = new SWFObject(
		"password.swf?reload=" + (new Date()).getTime(),
		 "idswf", "250", "25", "9", "#FFFFFF");

	so.write("flashcontent");
</script>

</BODY>
</HTML>
  










  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ