開発環境
- macOS Mojave - Apple (OS)
- Emacs (Text Editor)
- Windows 10 Pro (OS)
- Visual Studio Code (Text Editor)
- Python 3.7 (プログラミング言語)
中学数学からはじめる暗号入門 ~現代の暗号はどのようにして作られたのか~ (知りたい!サイエンス 141) (関根 章道(著)、技術評論社))の前編(暗号の歴史あれこれ)、第2章(またまた被害に - シーザー式暗号とエニグマ暗号機)の暗号を作って解いてみよう(Part 3 (シーザー式暗号))の解答をPythonで求めてみる。
コード
Python 3
#!/usr/bin/env python3 def decode(code: str, key: int) -> str: alphabet = [chr(ord("A") + i) for i in range(26)] shift = {a: alphabet[i-key] for i, a in enumerate(alphabet)} return ''.join([shift[c] for c in code]) if __name__ == '__main__': code = 'GJQZVIYKZVXZ' for key in range(26): print(f'キー: {key:>2} 復号化: {decode(code, key)}')
入出力結果(cmd(コマンドプロンプト)、Terminal、Jupyter(IPython))
C:\Users\...>py -3 sample1.py キー: 0 復号化: GJQZVIYKZVXZ キー: 1 復号化: FIPYUHXJYUWY キー: 2 復号化: EHOXTGWIXTVX キー: 3 復号化: DGNWSFVHWSUW キー: 4 復号化: CFMVREUGVRTV キー: 5 復号化: BELUQDTFUQSU キー: 6 復号化: ADKTPCSETPRT キー: 7 復号化: ZCJSOBRDSOQS キー: 8 復号化: YBIRNAQCRNPR キー: 9 復号化: XAHQMZPBQMOQ キー: 10 復号化: WZGPLYOAPLNP キー: 11 復号化: VYFOKXNZOKMO キー: 12 復号化: UXENJWMYNJLN キー: 13 復号化: TWDMIVLXMIKM キー: 14 復号化: SVCLHUKWLHJL キー: 15 復号化: RUBKGTJVKGIK キー: 16 復号化: QTAJFSIUJFHJ キー: 17 復号化: PSZIERHTIEGI キー: 18 復号化: ORYHDQGSHDFH キー: 19 復号化: NQXGCPFRGCEG キー: 20 復号化: MPWFBOEQFBDF キー: 21 復号化: LOVEANDPEACE キー: 22 復号化: KNUDZMCODZBD キー: 23 復号化: JMTCYLBNCYAC キー: 24 復号化: ILSBXKAMBXZB キー: 25 復号化: HKRAWJZLAWYA C:\Users\...>
ということで、解読結果はキーが21の場合の「love and peace(LOVEANDPIECE)」。
0 コメント:
コメントを投稿