Smalltalk で単アルファベット換字式暗号を作る
暗号解読の作問をするためのプログラムを Smalltalk(Squeak 5.2) で書いてみました。ソースコードは以下の通りです。
|plainText cryptoKey stream|
plainText := 'This is plain text.' translateToLowercase.
cryptoKey := Character alphabet shuffle.
Transcript cr; show: 'Key is: ' , cryptoKey; cr.
stream := TextStream with: ''.
plainText do: [:each ||index|
index := Character alphabet indexOf: each.
index = 0 ifTrue: [
stream nextPut: each.
]
ifFalse: [
stream nextPut: (cryptoKey at: index).
]
].
Transcript cr; show: stream contents.
結果、こんな問題が出来ました。
https://gist.github.com/satoyuichi/f27b3b9b9911da69c7dce5977f27c2d1
解説
暗号は単アルファベット換字式暗号です。アルファベットをスクランブルしたものを鍵として、平文を暗号化しています。平文をすべて小文字に変換しているのは解読しやすくするためです。記号やスペースをそのままにしているのも解読しやすくするためですが、同様にスクランブルするのであれば、
cryptoKey := Character alphabet shuffle.
を
cryptoKey := (Character alphabet , '.,:; ') shuffle.
などのようにすれば対応できます。
Author And Source
この問題について(Smalltalk で単アルファベット換字式暗号を作る), 我々は、より多くの情報をここで見つけました https://qiita.com/YuichiSato/items/c570fac99d6cc887e3b1著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .