〜 テキスト 〜
ビット反転を行い解読しにくくする

使用するデータをファイルとして保持し、次回はそのデータを読み込んで使用する場合、
利用者のいいようにデータを変更されると都合が悪く、開発側としてはデータ操作されることを嫌います。
そこで、簡単には解析されないようにデータを暗号化することが回避策として考えられます。
暗号化は用途によって多種多様存在しますが、ココではコチラと違って、
暗号化・復号化共に同一キーを使用する「文字コードのビット反転」で読み取りを防ぎます。
サンプルモジュールでは、反転キーと同じ文字コードの場合に反転結果が0となるため、
文字列終端コードNULLまでしか正常に処理できないHSP向けに処理しないようにしています。
	

bitrev 変数, キー
変数暗号化するテキストの入った文字列型変数を指定する。
キー暗号化に使用するキーコードを指定する。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
#module
#deffunc bitrev val, int
	mref s, 24 : mref key,1
	strlen len, s
	repeat len
		peek code, s, cnt
		if code ^ key : code = code ^ key // 反転して0になる場合は処理しない
		poke s, cnt, code
	loop
	return
#global

	randomize
	rnd k, 200
	string = "うんらいまつふうらいまつくうねるところにすむところ"
	bitrev string, k // 暗号化
	mes string
	bitrev string, k // 復号化
	mes string
	stop

bitrev 変数, キー
変数暗号化するテキストの入った文字列型変数を指定する。
キー暗号化に使用するキーコードを指定する。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
#module
#deffunc bitrev var s, int key, local code
	repeat strlen(s)
		code = peek(s, cnt)
		if code ^ key : code^= key // 反転して0になる場合は処理しない
		poke s, cnt, code
	loop
	return
#global

	randomize
	string = "やぶらこうじのぶらこうじぱいぽぱいぽ"
	k = rnd(200)
	bitrev string, k // 暗号化
	mes string
	bitrev string, k // 復号化
	mes string