■暗号化(テキスト方法) HSP3.0以降用です
;以下ソースです。(暗号化)======================================================= sdim data,2500 sdim data2,2500*2 data2="" datasize=0 src=0 dst=0 data="暗号化したい文章orデータをここに読み込みます" dialog "暗号化\n元の文章:"+data datasize=strlen(data) ;dataのサイズを調べる repeat datasize,0 src=peek(data,cnt) ;変数dataのcntのところをsrcへ読み込む ;暗号化アルゴリズム========= dst=($12+(src^dst2))^$b6 ;計算式(元の文>暗号) dst=dst+256&255 ;変数dstが255をオーバーしないようにする。 ;========================= ;数値>16進数(2文字)に変換 dst2=dst ;暗号鍵用のバッファ dst=int(dst) data2=data2+strf("%02x",dst) loop dialog "暗号化\n暗号化された文章:"+data2 ;復元する。==================================================================== datasize=0 src=0 dst=0 dst2=0 data="" hexstr="0123456789AaBbCcDdEeFf" ;16進数の文字列 ;暗号化の復元なので前に暗号化したdata2を使用 dialog "復元\n暗号化されている文章:"+data2 datasize=strlen(data2) ;data2のサイズを調べる repeat datasize/2,0 dst=strmid(data2,cnt*2,2) ;変数data2のcntのところをdstへ読み込む ;16進数を10進数に変換------- src=0:tmp=0 ;変換結果用の変数 repeat 2 tmp2=strmid(dst,cnt,1) tmp=instr(hexstr,0,tmp2) if tmp>10:tmp=tmp/2+5 src=src*16+tmp ;srcに追加 loop dst=0:dst=src ;変換結果をdstに移動 ;------------------------- ;暗号化アルゴリズム========= src=((dst^$b6)-$12)^dst2 ;計算式(暗号>元の文) scr=scr+256&255 ;変数scrが255をオーバーしないようにする。 dst2=dst ;暗号鍵用のバッファ ;========================= poke data,cnt,src ;変数srcを変数dataのcntのところへ書き込む loop data=strmid(data,0,datasize/2) ;バッファ内の余分なデータを削除 dialog "復元\n復元された文章:"+data stop |
解説:
さて、先ほどのファイルの暗号化でも文字列は暗号化できるけど....
テキストデータとしては保存できないじゃないか!!!ってときがあるので一様書いておきます。
(実際にバイナリ式で暗号化したものをbsave命令などで保存して、メモ帳などで開いてみてください。
文字化けしていると思います。)
暗号化アルゴリズムの部分はまったく変わりませんが、バイナリ扱いだった文字列をわざわざ、テキスト
データに戻して暗号化しています。(変換しているところは緑色にしています。)
なお、これは変数dataの中にある文字列を変数data2へ暗号化します。
(テキストで書き込むため暗号化後のサイズは暗号化前の2倍です。
なぜなら、1byteを数値で表すと「0x00〜0xff」でこれをそのままテキストにすると2文字(00〜ff)になるからです。)