2019年7月30日火曜日

開発環境

中学数学からはじめる暗号入門 ~現代の暗号はどのようにして作られたのか~ (知りたい!サイエンス 141) (関根 章道(著)、技術評論社))の前編(暗号の歴史あれこれ)、第3章(上杉謙信、誰思う - ポリュビオス式暗号と日本版ポリュビオス式暗号)の暗号を作って解いてみよう(36ページ、Part 4(ポリュビオス式暗号))の解答を求めてみる。

コード

Python 3

#!/usr/bin/env python3
import pprint
table = \
    [[chr(ord('A') + j) for j in range(5)],
     ['F', 'G', 'H', 'I/J', 'K']] + \
    [[chr(ord('L') + (i * 5) + j) for j in range(5)]
     for i in range(3)]

pprint.pprint(table)
encoded = '32114423321144241343'

for i, n in enumerate(encoded):
    if i % 2 == 0:
        print(table[int(n) - 1][int(encoded[i + 1]) - 1], end='')

print()

入出力結果(Bash、cmd.exe(コマンドプロンプト)、Terminal、Jupyter(IPython))

$ ./sample1.py 
[['A', 'B', 'C', 'D', 'E'],
 ['F', 'G', 'H', 'I/J', 'K'],
 ['L', 'M', 'N', 'O', 'P'],
 ['Q', 'R', 'S', 'T', 'U'],
 ['V', 'W', 'X', 'Y', 'Z']]
MATHMATI/JCS
$ 

ということで、元の単語はMATHMATICS(数学)。

0 コメント:

コメントを投稿