どうも、ビンゴ5で200円以上当てられないFlaxBearです。
おかげで1200円中800円損害が出ていますorz
今回は、以前書いた暗号解読辞典に書かれている暗号をプログラムにしてみようと思います。簡単過ぎる暗号なのでほとんど使い物にはならないですが準備運動みたいな感じとして読んでもらえればと思ってます。
#
#逆転置暗号を文章単位で行い、5文字ずつに区切って出力する
# @param [String] plainText 平文
# @return [Array] 逆転置暗号文(文単位)
def reversePositionSentenceCipher(plainText)
blankPlainText = plainText.gsub(" ", "") # 単語間の空白を取り除く
cipherText = blankPlainText.reverse
return cipherText.scan(/.{1,#{5}}/) # 5文字単位で区切る
end
#
# 文章単位で行った逆転置暗号を、平文に戻す
# @param [Array] cipherTextList 暗号文
# @return [String] 平文
def reversePositionSentenceDecryption(cipherTextList)
chipherText = cipherTextList.join # 5文字単の配列なのでまとめる
return chipherText.reverse
end
#
# 逆転置暗号を単語単位で行い、5文字ずつに区切って出力する
# @param [String] plainText 平文
# @return [Array] 逆転置暗号文(単語単位)
def reversePositionWordsCipher(plainText)
plainTextList = plainText.split(" ") #単語間で区切る
chipherText = ""
for value in plainTextList do
chipherText += value.reverse
end
return chipherText.scan(/.{1,#{5}}/) # 5文字単位で区切る
end
#
# 単語単位で行った逆転置暗号を、平文に戻す
# (戻らないので手書きで行ってください)
# @param [Arrya] cipherTextList 暗号文
# @return [String] メッセージ
def reversePositionWordsDecryption(cipherTextList)
return "手書きで行ってくださいorz"
end
プログラムはコメントを読めばわかると思います。
ただし単語単位で行った逆転置暗号の復号処理が機械的に処理を行うことが出来ない(と思っている)ので自力で解かないといけないですorz
最後に、暗号解読辞典の2章の終盤で3章に行こうとしているのですがまさかの2章でコード、3章で信号のことなど書かれているのでそこまで作成するのかや出来るのかと思ってます。本当に後先考えず行動するのを少しは控えた方がいいですねorz