Windows10 でCAPICOM.Utilities を使用するには、こちらからダウンロードしてインストールが必要です。 但し 32 ビットでインストールされるので、VBScript で実行する際に、『C:\Windows\SysWOW64\cscript.exe』で実行する必要があります。 ( または C:\Windows\SysWOW64\wscript.exe ) ドキュメント 以下の方法と同様で、バイナリファイルの変換に使う事が可能です。(PHPの文字列はバイナリ扱いです) 結果は PHP の関数で同じになる事を確かめています。 ( php -r "print hash('sha256','変換する文字列');" ) 変換する種類は、こちらの定数を使用します(HashedData.Algorithm)( VBscript で最後に小文字に変換してますが、PHP の結果と合わす為です ) Base64 の変換では、本来良く使われて来た用途としてバイナリデータのテキスト表現で、メールの添付ファイルに使用する際に改行を含めて76文字になるようになっています。CAPIUtil.Base64Encode の仕様もそうなっているので、PHP と比較する為に、ここではわざわざ改行を取り除いています。 それと、CAPICOM.HashedData で作成したオブジェクトを使いまわすとエラーになる事があったので、毎回作成して処理しました。
Set CAPIUtil = Wscript.CreateObject( "CAPICOM.Utilities" ) Set Stream = Wscript.CreateObject("ADODB.Stream") Set StreamBin = Wscript.CreateObject("ADODB.Stream") '*********************************** ' Base64 '*********************************** Stream.Open Stream.Charset = "shift_jis" ' shift_jis で入力文字を書き込む Stream.WriteText "日本語表示OK日本語表示OK日本語表示OK日本語表示OK日本語表示OK" Stream.Position = 0 ' バイナリで開く StreamBin.Open StreamBin.Type = 1 ' テキストをバイナリに変換 Stream.CopyTo StreamBin Stream.Close ' 読み込みの為にデータポインタを先頭にセット StreamBin.Position = 0 str = CAPIUtil.ByteArrayToBinaryString( StreamBin.Read ) str2 = CAPIUtil.Base64Encode( str ) ' ' 長い文字列は仕様として、(\r\n を含めて 76文字で) 改行されます str2 = Replace(str2,vbCrLf,"") Wscript.Echo str2 '*********************************** ' SHA1,SHA256,SHA384,SHA512 と MD5 '*********************************** ' SHA1 Set HashedData = Wscript.CreateObject( "CAPICOM.HashedData" ) HashedData.Algorithm = 0 HashedData.Hash(str) Wscript.Echo LCase(HashedData.Value) ' SHA256 Set HashedData = Wscript.CreateObject( "CAPICOM.HashedData" ) HashedData.Algorithm = 4 HashedData.Hash(str) Wscript.Echo LCase(HashedData.Value) ' SHA384 Set HashedData = Wscript.CreateObject( "CAPICOM.HashedData" ) HashedData.Algorithm = 5 HashedData.Hash(str) Wscript.Echo LCase(HashedData.Value) ' SHA512 Set HashedData = Wscript.CreateObject( "CAPICOM.HashedData" ) HashedData.Algorithm = 6 HashedData.Hash(str) Wscript.Echo LCase(HashedData.Value) ' MD5 Set HashedData = Wscript.CreateObject( "CAPICOM.HashedData" ) HashedData.Algorithm = 3 HashedData.Hash(str) Wscript.Echo LCase(HashedData.Value)
|
【VBScriptの最新記事】
- 【VBS】WshShell.Runによる外部プログラムの実行のバリエーションと注意事項
- VBScript で GUID 生成
- Windows 標準の CDO.Message で(GmailまたはYahoo!メールを使って)簡単にバッチ処理からメールを送る
- バックアップスクリプトを作るスクリプト
- バッチ処理の為の .wsf スケルトン / cscript.exe での実行を強制する / 自分自身の呼び出し
- 【VBS + Excel】シンプルな詳細設計書のフォーマット。1) Excel のダウンロード、2) VBScript で作成するサンプル
- 【VBS汎用】SHIFT_JISデータを各種キャラクタセットのテキストファイルへ変換
- VBScript : デスクトップの列挙
- Excel シートから Basp21 を使用してメールの送受信をして、今後の何かに役立てる
- VBScript + clipコマンド + レジストリ登録で、エクスプローラのディレクトリの右クリックでファイル名のリストをクリップボードにコピーできるようにする
- VBScript(WMI) : OSの情報をコマンドプロンプトに一覧で表示する
- VBScript(WMI) : 共有一覧
- IE のお気に入りディレクトリにあるファイルの表示・非表示を設定する / HTA(HTML アプリケーション)
- VBScript : ディレクトリ内のディレクトリで使用している容量一覧
- VBScript(WMI) : システム環境変数の変更を監視する event_change_reg.wsf
- VBScript : スクリプトが存在するディレクトリをユーザ環境変数の PATH へ登録
- XMLファイルの書き換え (VBScript)
- VBScript から実行する PHPコードの PDF処理のサンプル
- Cscript.exe の引数と、Windows Script Host を無効にするレジストリ設定
- Access.Application ( docmd.TransferText ) でエクスポートとインポート