【Class Library】


ちょっとした暗号化⇔解読処理
 暗号化処理と言ったら何だか難しい処理のように思えますが、簡単な暗号化 ならビット演算の知識が多少あれば理解できる処理です。
 コンピューター上のデータの最小単位は1バイトですが、暗号化というのは このバイト型の値を他の値に変換することです。 しかし、一度変換した後その値を復元することができないなら、 暗号化どころか何の意味もありません。そこで、その暗号−復元ができる 一番簡単な方法として「バイト型データの反転」 という方法があります。バイト型のデータは0〜255までの値なので、反転の方法 は、次のように引き算をするだけです。

255 - (元のデータ) = (反転後データ)


こうしておくと、復元処理も同様な方法で行えるので復元も可能となります。
 しかし、このような処理だとあまりにも簡単な暗号化なので、すぐに解読される 可能性があり、実用的ではありません。それを補う方法として、ビット演算 を使った処理があります。ビット演算とは、データのAND,OR,XOR論理演算 のことで元のデータをあるデータと結合させて新しいデータにする計算のことです。
例えば、

255 AND 100 = 100
255 OR 100 = 255
255 XOR 100 = 155 --- 155 XOR 100 = 255


のようなものです。AND,OR結合の場合復元が困難なため、通常XOR結合を使用し ます。でも、よくみるとこの論理計算方法は、 反転とよく似ていることがわかります。使用している値が、元データのみ であるか新たなデータを使用しているかの違いです。
 下のクラスではこのような簡単な処理しかしていませんが、 ビット演算を組み合わせることで、より強力な暗号化が可能になると思います。


★クラス内の処理内容---主な処理★

 暗号化,解読ともに同様のプロシージャを用います。  暗号元のバイトデータをある定数とXor結合させて暗号化しています。復元も 同様です。

    For i = 0 To UBound(bd) '配列の要素の最大インデックス
        bd(i) = bd(i) Xor XorCount '暗号化処理
    Next i


★クラスの使用法★

 暗号化,解読ともに同様のプロシージャを用います。暗号元ファイルパスと 暗号先ファイルパスを引数に指定して実行すると、暗号化されたファイルが 作成されます。もし、暗号先ファイルが存在していれば上書き保存するかどう かを尋ねるようになっています。

Private Sub Command1_Click()
    Dim cs As New CSecurity
    Dim ret As Boolean
    Dim msg As String
 
    Screen.MousePointer = 11
    ret = cs.GetByteData("暗号元ファイルパス", "暗号先ファイルパス")
    Screen.MousePointer = 0

    If ret = True Then
        msg = "正常に暗号化<->解読処理が終了しました"
        MsgBox msg, vbInformation + vbOKOnly, "暗号化<->解読処理"
    Else
        msg = "暗号化<->解読処理ができませんでした"
        MsgBox msg, vbExclamation + vbOKOnly, "暗号化<->解読処理"
    End If
End Sub


(サンプルプログラムの動作確認)

機種 PC-9821V13S
OS Windows95
開発ツール Visual Basic Ver.4.0
更新日 99/11/08

ダウンロード 公開停止

Visual Basic Ver.5.0でも問題なく動作すると思います。
なお、このコーナーに掲載されているプログラムコード、およびプログラムファ イルが原因で起きた損害などに関して一切の責任を負うことはできません。

★このコーナーに掲載されているプログラムコード、およびプログラムファ イルを無断で配布・転載することは、原則として禁止です。


Class Libraryインデックス トップページ


Copyright(C)1999-2000 Tomoya. All rights reserved.