t-hom’s diary

主にVBAネタを扱っているブログ…とも言えなくなってきたこの頃。

VBA シーザー暗号を作ってみた

暗号化とは、何らかの方法でデータを読めなくする方法である。
元のデータを取り出すには、復号化という作業が必要になる。

もっとも原始的な方法のひとつに、アルファベットをずらすという方法(シーザー暗号)がある。

例えばこのブログのタイトルを1文字ずつずらしていくと、
t-hom’s diary

u-ipn't ejbsz

v-jqo'u fkcta

w-krp'v gldub

このように簡単には読めなくなる。

今回は実際にVBAで作ってみた。

Sub シーザー暗号()
    平文 = "t-hom's diary"
    暗号文 = ""
    オフセット = 3
    
    For i = 1 To Len(平文)
        文字コード = Asc(Mid(平文, i, 1))
        
        Select Case 文字コード
            Case 65 To 90
                文字コード = 文字コード + オフセット
                余り = 文字コード - 91
                If 余り >= 0 Then 文字コード = 65 + 余り
                
            Case 97 To 122
                文字コード = 文字コード + オフセット
                余り = 文字コード - 123
                If 余り >= 0 Then 文字コード = 97 + 余り
        Case Else
            'Do Nothing
        End Select
        
        暗号文 = 暗号文 & Chr(文字コード)
    Next
    Debug.Print 暗号文
End Sub

復号化するにはアルファベットを左に3つずらせば良い。
実に簡単ではあるがパッと見では読めなくなるので、Excelにパスワードをそのままメモしているようなケースでは、平文より幾分マシである。

※ちょっと分析されたらアウトなので、重要なものには使用しない方が良い。

当ブログは、amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、 Amazonアソシエイト・プログラムの参加者です。