vbsで文字列を暗号化するプログラムを作ってみた!
どうも、fです。お久しぶりです。
最近いそぺんさんの記事が若干手抜きになってるような...?そんなことないな!!
さて、今回はタイトルにもある通り、文字列を暗号にできるプログラムです。
作ったのは今年の冬ぐらいです。
↓↓ソースコード↓↓
Option Explicit
Dim mode,shift,shift2,character,character2,sentence,num1
character="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijkrmnopqrstuvwxyzあいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゐゆゑよらりるれろわをんがぎぐげござじずぜぞだぢづでどばびぶべぼぱぴぷぺぽぁぃぅぇぉっゃゅょアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤヰユヱヨラリルレロワヲンガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポァィゥェォッャュョ,.:~-=_@/!?#$%&'\+-[]{}()<>、。!?「」ー~・★♪"
'characterは、暗号に対応する文字です。ここをいじれば暗号化&読み取りに対応する文字を増やすことができます。
character2=Len(character)
mode=InputBox("暗号化しますか?読み取りしますか?","シーザー暗号作成・読み取りプログラム")
If mode="暗号化" then
mode=0
End if
If mode="読み取り" then
mode=1
End if
If mode=0 then
shift2=0
Do Until shift2=1
shift=InputBox("何文字ずらしますか?"& vbCr &"(1以上の数字かつ整数でないものは"& vbCr &"小数点以下切り捨て)","シーザー暗号作成・読み取りプログラム","自然数を入力")
If IsNumeric(shift)=true then
If shift>0.5 then
Int(shift)
shift2=1
Else
MsgBox"入力された文字列は、自然数ではありません。自然数を入力してください。",,"シーザー暗号作成・読み取りプログラム"
End if
Else
MsgBox"入力された文字列は、自然数ではありません。自然数を入力してください。",,"シーザー暗号作成・読み取りプログラム"
End if
Loop
sentence="/対応する文字"
Do While sentence="/対応する文字"
sentence=InputBox("暗号化したい文字列を入力して下さい。" &vbCr& "「/対応する文字」と入力することで、暗号化&読み取りに対応している文字の一覧を見ることができます。","シーザー暗号作成・読み取りプログラム","文字列を入力")
If sentence="/対応する文字" then
MsgBox character
End if
Loop
num1=0
Do Until num1=Len(sentence)
num1=num1+1
If Instr(character,Mid(sentence,num1,1))+shift>character2+0.5 then
sentence=Left(sentence,num1-1)&Mid(character,Instr(character,Mid(sentence,num1,1))+shift-character2,1)&Right(sentence,Len(sentence)-num1)
Else
sentence=Left(sentence,num1-1)&Mid(character,Instr(character,Mid(sentence,num1,1))+shift,1)&Right(sentence,Len(sentence)-num1)
End if
Loop
InputBox"下の文字が青文字の状態でコピーしてください。" & vbCr & "ずらす文字数:"&shift & vbCr & "文章↓","シーザー暗号作成・読み取りプログラム",sentence
End if
If mode=1 then
shift2=0
Do Until shift2=1
shift=InputBox("ずらす文字数を入力してください。"& vbCr &"(1以上の数字かつ整数でないものは"& vbCr &"小数点以下切り捨て)","シーザー暗号作成・読み取りプログラム","自然数を入力")
If IsNumeric(shift)=true then
If shift>0.5 then
Int(shift)
shift2=1
Else
MsgBox"入力された文字列は、自然数ではありません。自然数を入力してください。",,"シーザー暗号作成・読み取りプログラム"
End if
Else
MsgBox"入力された文字列は、自然数ではありません。自然数を入力してください。",,"シーザー暗号作成・読み取りプログラム"
End if
Loop
sentence=InputBox("文章を入力してください。","シーザー暗号作成・読み取りプログラム","文章を入力")
num1=0
Do Until num1=Len(sentence)
num1=num1+1
If Instr(character,Mid(sentence,num1,1))-shift<0.5 then
sentence=Left(sentence,num1-1)&Mid(character,Instr(character,Mid(sentence,num1,1))-shift+character2,1)&Right(sentence,Len(sentence)-num1)
Else
sentence=Left(sentence,num1-1)&Mid(character,Instr(character,Mid(sentence,num1,1))-shift,1)&Right(sentence,Len(sentence)-num1)
End if
Loop
MsgBox"文章:"&sentence,,"シーザー暗号作成・読み取りプログラム"
End if
今回のは長いですね。
プログラムの性質上使える文字が決まっているのですが、実はこのプログラムで対応している文字は簡単に増やすことができます。
上から三行目の「character」の文字列に書かれている文字が対応する文字になっています。
つまり、ここに文字を追加すればその文字も使えるようになるというわけです。
ソースコード解説は面倒なので勘弁してください...
導入方法はいつもの通り、ソースコードをメモ帳にコピペして「○○○.vbs」みたいな名前で保存するだけです。
適当な記事になってしまいすみません...
それでは。