|
けんちさん,こんにちは。
》それより秀丸自身が保存時にテキストを暗号化して吐き出してくれて、読み取る
》時は保存時のパスワードと一致した時のみ復号化してくれればいいんですが。
こんなやり方もあるにはあるということで。ご関心があれば。
暗号の専門家からみれば,児戯に類するレベルでしょうが,テキストレベルだ
けで実行できるということで。
以下のマクロを登録して,ファイルのオープン,保存時に実行してみてくださ
い。
----------------------------------------------------------------------
キーは 1 〜 35000 の半角数字
暗号化するときと復号化するとき,当然のことながら同じキーでないと復号で
きなません。
数字以外の文字でも一見暗号化できるように見えるが,これは簡単に復号され
されます。しかし,あえて文字チェックは行ないません。これをマクロに書き込む
とヒントになるからです。
キーを忘れてしまうと,取り返しがつきませんので,くれぐれもご注意を。
----------------------------------------------------------------------
なお,当面は不要なファイルで何度も実験してみることが必要でしょう。思わ
ぬバグがあるかも知れませんので。
なお,この実行結果についての事故については,責任はとりかねますので,
その点お含み下さい。
では, (^^)/~
山紫水明
//---- Encrypt.mac ----------------------------------------//
// 簡易暗号化保存マクロ
$docdir = "D:\\Temp";
//文書ファイルフォルダ,適当なフォルダ名に変える
menu "&1 暗号化して保存",
"&2 通常の保存",
"&3 暗号化ファイルを開いて復号化",
"&4 通常ファイルを開く";
#r = result;
if( #r == 0 ) endmacro;
else if( #r == 1 ) call EncryptSave;
else if( #r == 2 ) call UsualSave;
else if( #r == 3 ) call DecodeOpen;
else call UsualOpen;
endmacro;
EncryptSave:
#key = val( input( "キーは?" ) );
title "*** 暗号化しています ***";
disabledraw;
gofiletop;
while( 1 ) {
while( code == 0x0d ) right;
if( code == eof ) break;
insert rightstr( "000" + str( code + #key ) , 5 );
delete;
}
gofiletop;
insert "@^-[]{}+*:\n";
title 0;
enabledraw;
question "暗号化しました。保存して終了しますか?";
if( result ) saveexit;
return;
UsualSave:
SAVEAS;
return;
DecodeOpen:
disabledraw;
openfile $docdir + "\\*.txt";
gofiletop;
$top = gettext(0,0,10,0);
if($top != "@^-[]{}+*:") {
message "このファイルは暗号化されていません。";
endmacro;
}
#key = val( input( "キーは?" ) );
title "*** 復号化しています ***";
deleteline;
disabledraw;
gofiletop;
while( 1 ) {
while( code == 0x0d ) right;
beginsel;
right 5;
$s = gettext( seltopx, seltopy, selendx, selendy );
$s = char( val( $s ) - #key );
beginsel;
left 5;
insert $s;
right;
if( code == eof ) break;
left;
}
gofiletop;
title 0;
enabledraw;
question "これで保存していいですか?";
if( result == yes ) save;
else quit;
return;
UsualOpen:
openfile $docdir + "\\*.txt";
return;
//-------------------------------------------------//
|
|