保存のとき...

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
popkou

保存のとき...

#1 投稿記事 by popkou »

保存のとき簡単な暗号化にして保存、開くができません。誰か教えてください。
konisi
記事: 893
登録日時: 2005年7月25日(月) 13:27
お住まい: 埼玉県東松山市
連絡する:

#2 投稿記事 by konisi »

弱い暗号化として定数+Xorを使うなら、書き込む時書き込む文字列を一ブロック単位で区切り、Xor演算をして書き込めばいいかと思います。

コード: 全て選択

Sub WriteXor(Buf As String,i As Long,C As DWord)
    '引数Bufは最大で4バイト(終端NULL含めずに4バイト)の文字列にする。
    Dim A As DWord
    Dim B$ As String
    A=Buf(0)+Buf(1)<<8+Buf(2)<<16+Buf(3)<<24'4バイト単位で数値化
    A=A Xor C
    B$=ZeroString(4)
    B$(0)=A And &HFF'文字列に直す
    B$(1)=(A And &HFF00)>>8
    B$(2)=(A And &HFF0000)>>16
    B$(3)=(A And &HFF000000)>>24
    Put #1,i,B$'あらかじめランダムアクセスモード+4バイトフィールドで開いておく
End Sub

Sub InputXor(ByRef Buf As String,i As Long,C As DWord)
    Dim A As DWord
    Dim B$ As String
    Get #1,i,B$'あらかじめランダムアクセスモード+4バイトフィールドで開いておく
    A=B$(0)+B$(1)<<8+B$(2)<<16+B$(3)<<24'4バイト単位で数値化
    A=A Xor C
    Buf=ZeroString(4)
    Buf(0)=A And &HFF'文字列に直す
    Buf(1)=(A And &HFF00)>>8
    Buf(2)=(A And &HFF0000)>>16
    Buf(3)=(A And &HFF000000)>>24
End Sub
と言った具合に。(これはやや適当が入ってますが。)
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。

に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
ケースケ
記事: 45
登録日時: 2005年5月31日(火) 23:46
お住まい: 愛知県
連絡する:

#3 投稿記事 by ケースケ »

ただ、メモ帳等で読めないようにするだけなら、定数を加えるだけでいいと思います。

コード: 全て選択


Dim FileData As BytePtr '保存内容
Dim x As Long ' 暗号化の定数
Dim Size As Long  '保存内容のサイズ

Dim i As Long
Dim Size As Long


'暗号化時
Size=lstrlen(FileData)
x=5   '暗号化の定数を設定
for i=0 To Size
     FileData=FileData+x
Next i


'復号化時
Size=lstrlen(FileData)
x=5   '復号化の定数を設定
for i=0 To Size
     FileData=FileData-x
Next i
Ryo

#4 投稿記事 by Ryo »

定数なら変数を使用しなくてもConstで定義するだけで良いと思います。
返信する