SQLの窓 イラストAC フリー素材

2019年01月11日

VBScript : CAPICOM を使った通常文字列の Base64エンコードと SHA1 と MD5 と SHA256/384/512

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の最新記事】
posted by at 2019-01-11 16:41 | VBScript | このブログの読者になる | 更新情報をチェックする

2019年01月08日

BEASTARS 11 : 決着ついた




いろんな事に決着付いて『しまった』と言わざるを得ない展開で溜息が出た。

ここからどうなるのかは想像も付かないけれど、レゴシが主役でルイが戻って来た以上どこかへ向かって物語は狼煙を上げるんだろうなぁ...

世の中も、自分的にもこれから数年は大きな変化が起きる事が『決まっている』だけに、とても感慨深いお話でした。


凄い・すごい・スゴイ





posted by at 2019-01-08 22:20 | 漫画 | このブログの読者になる | 更新情報をチェックする

2019年01月05日

DAZ3D : このブログのタイトル画像の Iray 化 ( 元は 3Delight )

Iray 化したからといって、良くなるとは限らないですね。



もうちょっとライティングで明暗のメリハリが必要ですね。




仕方無いので、カメラ位置変えて髪を風で流れるようにしてごまかしました






posted by at 2019-01-05 01:07 | Iray DAZ3D DAZStudio イラスト | このブログの読者になる | 更新情報をチェックする

DAZ3D : ツリーハウスの夜

プロトタイプ

ツリーハウスのプロダクトですが、たしか無料で手にいれたものでおせじにも『良いもの』とは言えないのですが、Iray 使った夜の照明ならいろいろごまかせるだろうとやってみました。



これはこれでいいんですが、雰囲気の比較の為に GIMP でスクリーンで明るくしたのが以下の画像。



この時点では木のテクスチャがさすがにちょっとクオリティが悪いです。背景は森の hdri を暗〜〜くして他のプロダクトの街灯みたいなのをくっつけてエミッションでライティングしてます。全体の明るさ調整に球を頭上において Emission でライト化して照明として使用しています。

以下の画像だと、背景の HDRI の様子がより解ります。



イラストAC に投稿したもの



投稿にあたって、壁と扉のシェーダを変更して、基本的な明るさを少し上げています。それでも暗いのは暗いですが、壁紙として使うぶんにはこのくらいでもいいはずです。

猫のポーズテスト



猫のプロダクト(Millennium Cat)は古いものなので、猫単体ではなかなかしんどいので、風景の中に溶け込ませる事をテストしたシーンです。早くに購入していたのになかなか試す機会が無かった専用の拡張ポーズ(Purrfect Poses for the Millennium Cat)のお試しです。





posted by at 2019-01-05 00:41 | Iray DAZ3D DAZStudio イラスト | このブログの読者になる | 更新情報をチェックする

2019年01月04日

DAZStudio : F3 キーで表示されるダイアログでツールバーのアクションのカスタマイズ

F3 キーも変更できてしまいますが、デフォルトでは F3 キーのようです。


左側のツリーにアクションコマンドの一覧があるので、それを右側のツールバー部分にドラッグ&ドロップすると新しいアクションを追加できます。( ドロップ後ドラッグで移動できます )



特にあったら便利なのは Viewport なので試してみるには最適です。

デフォルトではツールバーは MainTools がありますが、Tools は OFF になっているので表示されません。内容は メニューの Tools と同じなので気にしなくてもいいです。表示されているツールバーと Main が対応しています



プロダクトをツールバーに登録する

プロダクトのアイコンを右クリックして、Create Custom Action を選択すると、Scripts メニューに登録されます。





そうすると、Action ツリーの先頭の Custom にも登録されるので、それをドラッグ&ドロップしてツールバーに登録します






posted by at 2019-01-04 17:11 | DAZStudio | このブログの読者になる | 更新情報をチェックする

Seesaa(またはさくらのブログ) の記事の一括編集内で、各種の設定を一括変更する為のブックマークレット

※ さくらのブログに広告の表示はありません

一括編集状態で実行する必要があります




Sessaa 一括変更

一括編集タブで使用します。検索結果でもいいですし、単純に200件表示でもいいです。

カテゴリの一括変更では、記事一覧を検索で絞ってから一括変更するといいと思います。カテゴリ番号は、そのカテゴリを表示した時の URL の最後の文字列( 例 : 7154748-1.html )のハイフン以降を除いた数字です。
( カテゴリID を数字に変更してカテゴリ変更をクリックします )


javascript:var wnd=document.createElement('iframe');wnd.setAttribute('id','if');wnd.frameBorder=0;document.body.appendChild(wnd);wnd.contentWindow.document.write('<script src=\'https://winofsql.jp/s01.js\' charset=\'shift_jis\'></script>')

// plugin Bookmarklet
// by lightbox

parent.document.getElementById("if").style.position='absolute';
parent.document.getElementById("if").style.width='300px';
parent.document.getElementById("if").style.height='34px';
parent.document.getElementById("if").style.left='0px';
parent.document.getElementById("if").style.top='0px';
parent.document.getElementById("if").style.zIndex=100;
var sLocation = parent.location.host;
var sUrl = parent.location.href;
var doc = parent.document;
var tds = doc.getElementsByTagName("form");
var len = tds.length;
var cnt = 0;
var add = null;
for( i = 0; i < len; i++ ) {
	if ( tds[i].name == 'search_form' ) {
//		cnt++;
//		if ( cnt == 2 ) {
			add = tds[i];
//		}
	}
}
var place = doc.createElement('div');
add.appendChild(place);
str="";
str+="<select id=changetype style=margin-left:5px;> \n";
str+="<option value=\"0\" title=\"受付×/表示×\">×/×</option> \n";
str+="<option value=\"1\" title=\"受付○/表示○\">○/○</option> \n";
str+="<option value=\"2\" title=\"受付×/表示○\">×/○</option> \n";
str+="<option value=\"3\" title=\"受付○(承認制)\">承認制</option> \n";
str+="</select> ";

str+="<select id=changetype2> \n";
str+="<option value=\"0\" selected=\"selected\">無効 / 公開</option> \n";
str+="<option value=\"1\" >有効 / 非公開</option> \n";
str+="</select> ";

str+="<INPUT type=button value='コメント' onClick='wnd.contentWindow.changeTarget(0)'>";
str+="&nbsp;<INPUT type=button value='公開設定' onClick='wnd.contentWindow.changeTarget(1)'>";
str+="&nbsp;<INPUT type=button value='広告の表示' onClick='wnd.contentWindow.changeTarget2()'>";
str+="&nbsp;<INPUT id='target_cat' type=text value='カテゴリID' onclick='this.select();' style='width:80px;'>";
str+="&nbsp;<INPUT type=button value='カテゴリ変更' onClick='wnd.contentWindow.changeTarget3()'>";
place.innerHTML = str


str="";
str+="<head> \n";
str+="<META http-equiv=\"Content-Type\" content=\"text/html; charset=shift_jis\" /> \n";
str+="<style type=text/css> \n";
str+="body { margin:0;background-color:forestgreen;color:white; } \n";
str+="</style> \n";
str+="</head> \n";
str+="<body> \n";

str+=" plugin Bookmarklet by lightbox\n";

str+="</body> \n";

document.write( str );
document.close();

var userAgent = window.navigator.userAgent.toLowerCase();
var appVersion = window.navigator.appVersion.toLowerCase();

function changeTarget(type) {

	var sels = doc.getElementsByTagName("select");
	var len = sels.length;
	var name,namelen,target;
	var value = doc.getElementById("changetype").value;

	// コメント
	if( type == 0 ) {

		for( i = 0; i < len; i++ ) {
			name = sels[i].name;
			namelen = name.length;
			target = name.substr(namelen-7,7)
			if ( target == 'comment' ) {
				doc.getElementsByName(name)[0].value = value;
			}
		}

	}
	// 公開・非公開
	if( type == 1 ) {

		value = doc.getElementById("changetype2").value;
		if ( value == 0 ) {
			value = 1;
		}
		else {
			value = 0;
		}

		for( i = 0; i < len; i++ ) {
			name = sels[i].name;
			namelen = name.length;
			target = name.substr(namelen-4,4)
			if ( target == 'flag' ) {
				doc.getElementsByName(name)[0].value = value;
			}
		}

	}

}
function changeTarget2() {

	var sels = doc.getElementsByTagName("select");
	var len = sels.length;
	var name,namelen,target;
	var value = doc.getElementById("changetype2").value;

	for( i = 0; i < len; i++ ) {
		name = sels[i].name;
		namelen = name.length;
		target = name.substr(namelen-4,4)
		if ( target == 'link' ) {
			doc.getElementsByName(name)[0].value = value;
		}
	}
}


function changeTarget3() {

	var sels = doc.getElementsByTagName("select");
	var len = sels.length;
	var name,namelen,target;
	var value = doc.getElementById("target_cat").value;

	for( i = 0; i < len; i++ ) {
		name = sels[i].name;
		namelen = name.length;
		target = name.substr(namelen-12,4)
		if ( target == '_cat' ) {
			doc.getElementsByName(name)[0].value = value;
		}
	}
}



更新履歴
2012-02-29 : カテゴリID を追加してからの初回投稿
2013-08-23 : 最新の Seesaa と さくらのブログで動作チェック
2015-07-06 : Seesaa と さくらが同じになっていたので、さくら専用を削除
2019-01-04 : 最新の Seesaa と さくらのブログで動作チェック




posted by at 2019-01-04 10:38 | ブックマークレット | このブログの読者になる | 更新情報をチェックする