AD スポンサー

[Excel for VBA] 簡単な暗号化と復号化について

この記事は約4分で読めます。

Excelを利用して、Database接続した状態からID,Passwordをやり取りするようなことを考えている方も多いと思います。

本来であればセキュリティが弱いExcelを使わずにVisual Studioで作り上げたほうがDatabaseとのやり取りや、ソースなどが見られることもないので安全だと思いますが・・。

今回、少々訳があってDatabaseのユーザー情報を持ったテーブルからADO接続しフォームからログイン認証を行うものを作る必要がありました。

その上で、Databaseにパスワードを登録する際に生のPasswardをUpdateするわけには行かないので、今回はとりあえず簡単な暗号・復号化のソースを書きました。

password_fukugou

[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

話題の商品や、その他のおすすめはこちら





【2022新登場】遠赤外線デスクヒーター Delmac 360°全方位発熱式パネルヒーター 筒型デスクヒーター 三段階温度調節 3/6/9時間タイマー付き 転倒自動OFF搭載 省エネパネルヒーター ひざ掛け付き オフィス 足元ヒーター 足冷え対策グッズ デスクワーク 部屋 年寄り 踏み型 ペット用(グレー)
Delmac
¥6,199(2023/01/04 20:28時点)
【新型!一体化筒型デスクヒーター】より実用性を高めた設計の追求により、Delmacは独自開発した「熱サイクル」防風構造の設計で発熱蓄熱を実現。断熱する天面カバー、発熱する床面パネルと吸湿発熱効果のあるひざ掛けを追加。720度全方位の立体集熱するにより、暖房効果の飛躍的な向上を実現。従来品と比べて5倍以上の超パワー・超大型発熱面積(合計5700mm²)だからこそ、足全体が放射された遠赤外線でしっかりとカバーされます。足元から冷えた不快感が一掃され、包み込むような温かさをすぐに実感できます。

アイリスプラザ キャットタワー ハンモック 爪とぎ コンパクト おもちゃ付き 据え置き型 仔猫にも グレー キャットランド 高さ155cm
アイリスプラザ(IRIS PLAZA)
¥6,004(2022/12/14 11:38時点)
【商品サイズ(幅×奥行×高さ)】:70×45×155cm 【付属品】:ねずみのおもちゃは取り外し可能。※予備のおもちゃが3つ


象印 加湿器 3.0L ホワイト EE-DC35-WA
象印マホービン(ZOJIRUSHI)
¥15,490(2023/01/04 20:30時点)
清潔な蒸気のスチーム式加湿器