シーザー暗号でも作ってみる

う、時間とネタがないので、今日はシーザー暗号でも作ってみます。暗号化する関数encryptcaesarと、復号する関数decryptcaesarを以下のように定義する。

caesar.py

def encryptcaesar(str,shift=1):
L = list(str)
return ''.join(map(chr,map((lambda s: ord(s) + shift),L)))
def decryptcaesar(str,shift=1):
return encryptcaesar(str,shift*-1)

文字列をリストに直すlist関数と、ある文字のASCIIコードを返すord関数、そしてmap関数を用いると一行で書けてしまいます。

実行結果。

>>> str = encryptcaesar('I love my wife!')
>>> str
'J!mpwf!nz!xjgf"'
>>> decryptcaesar(str)
'I love my wife!'
>>> str = encryptcaesar('Python is great',3)
>>> str
'S|wkrq#lv#juhdw'
>>> decryptcaesar(str,3)
'Python is great'
>>> 

いまどきこんなの暗号とは言えないけど、まあ基本ってことで。