[Excel for VBA] 簡単な暗号化と復号化について
Excelを利用して、Database接続した状態からID,Passwordをやり取りするようなことを考えている方も多いと思います。
本来であればセキュリティが弱いExcelを使わずにVisual Studioで作り上げたほうがDatabaseとのやり取りや、ソースなどが見られることもないので安全だと思いますが・・。
今回、少々訳があってDatabaseのユーザー情報を持ったテーブルからADO接続しフォームからログイン認証を行うものを作る必要がありました。
その上で、Databaseにパスワードを登録する際に生のPasswardをUpdateするわけには行かないので、今回はとりあえず簡単な暗号・復号化のソースを書きました。
[code lang=”vb”]
Private Sub CommandButton1_Click()
Dim filepath As String
Dim fNumber As Integer
Dim fString As String
Dim L As Long
Dim LL As Long
Dim B() As Byte
fNumber = FreeFile
filepath = ThisWorkbook.Path & “\ing_output.tmp”
‘古い「fName」パスの暗号ファイルを削除する。
Open filepath For Output As #fNumber
Close #fNumber
‘暗号化したい文字列を取得
fString = TextBox1.Value
‘ファイル出力(バイナリモードでデータを1バイトずつ処理をする)
Open filepath For Binary As #fNumber
L = Len(fString)
ReDim B(L – 1)
For LL = 0 To L – 1
B(LL) = Asc(Mid(fString, LL + 1, 1))
B(LL) = Not B(LL)
Next
Put #fNumber, , B()
Close #fNumber
End Sub
Private Sub CommandButton2_Click()
Dim filepath As String
Dim fNumber As Integer
Dim fString As String
Dim L As Long
Dim LL As Long
Dim B() As Byte
fNumber = FreeFile
filepath = ThisWorkbook.Path & “\ing_output.tmp”
Open filepath For Binary As #fNumber
L = LOF(fNumber)
ReDim B(L – 1)
Get #fNumber, , B()
Close #fNumber
For LL = 0 To L – 1
B(LL) = Not B(LL)
fString = fString & Chr(B(LL))
Next
‘複合した内容を表示する。
TextBox2.Value = fString
End Sub
[/code]
入力された半角英数字をバイナリモード 2バイトに置き換える方法です。
復号化はバイナリモードから1バイトづつに展開するだけですので、見た目はよくわからない漢字のカタマリになりますが、簡単すぎるので見る人が見ればわかると思います。
そもそもExcel vbaではセキュリティが甘いので、コレ以上求めてもというのが正直なところ。
今回は、さらっと見てわからなければ良いぐらいのものなので。
ソースと、実際のサンプルファイルをおいておきます。
#ログイン認証 (Access Databaseファイル)のフォームは別の機会に。
サンプルファイル ダウンロード Passward_Sample1.zip
今話題の商品や、その他のおすすめはこちら
No tags for this post.