Python でシーザー暗号
ちょっとしたわけがあって Python でシーザー暗号のプログラムを書くことになった。
Python には codecs というモジュールが標準で用意されているので、それを使って楽をしようということに。
でも、誰かが完全に動作するプログラムを書いてるんじゃないかと期待してネットを検索してみたが、日本語が扱える完全なプログラムを見つけることはできなかった。
で、まぁ、ぼくが期待した役割をぼく自身が果たしたので、ここに書いておけば誰かの役に立つかもしれない。ということで、ここに書いておくことにした。
簡単な機能だから解説はしないよ。まずは、このソースをそのままコピペして、動かしてみるとよいと思う。あとは、Python のドキュメントと適当に他のサイトを参考にすれば、お役に立つことだと思う。
最初にこのプログラムの動作例を、それに続いてプログラムの完全なソースコードを掲載した。どなたかの役に立てば幸いです。
1:encode 2:decode 0:exit = 1
to encode (enter:goback) = 魔神の内緒話
encoding = 6n2H56Jr44Th5LnS57rF6Xzk
1:encode 2:decode 0:exit = 2
to decode (enter:goback) = 6n2H56Jr44Th5LnS57rF6Xzk
decodeing = 魔神の内緒話
#----------------------------------------------------
import codecs
import base64
def cenc(s):
encutf8=s.encode('utf-8')
encb64=base64.b64encode(encutf8)
decascii=encb64.decode("ascii")
rot13=codecs.encode(decascii, "rot13")
return rot13
def cdec(s):
decrot13=codecs.decode(s, 'rot13')
decb64=base64.b64decode(decrot13)
decutf8=decb64.decode('utf-8')
return decutf8
if __name__ == '__main__':
while True:
s=input('1:encode 2:decode 0:exit = ')
if s=='0': break
elif s=='1':
print()
s=input('to encode (enter:goback) = ')
if s=='': print(); continue
ss=cenc(s)
print(); print('encoding = {}'.format(ss)); print()
elif s=='2':
print()
while True:
s=input('to decode (enter:goback) = ')
if s=='': print(); break
try:
ss=cdec(s)
print()
print('decodeing = {}'.format(ss))
print()
except:
print()
continue
else: print()
#----------------------------------------------------