本文介绍的是caesar的操作流程,非原版本。下面请看代码:
#!/usr/bin/python
"""
ecb -- (electronic codebook mode)
Please use 'encrypt' or 'decrypt', string letters use \"\", key is number.
"""
def encrypt(message, key):
#s = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!\"'()*,.=?`{}@- :;\t\n\r" #源始转码
s = "abcdefghijklmnopqrstuvwxyz" #原始转码
l = len(message)
l1 = []
l2 = []
lns = []
for i in range(0, l):
d = s.find(message[i]) #字符转数字
l1.append(d)
for i in range(0, len(message)):
c = (l1[i] + key) % len(s) #caesar加密核心
l2.append(c)
ln = len(l2)
for i in range(0, ln):
d = s[l2[i]] #输出数字转字母
lns.append(d)
l3 = lns
return(''.join(l3))
def decrypt(message, key):
#s = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!\"'()*,.=?`{}@- :;\t\n\r" #原始转码
s = "abcdefghijklmnopqrstuvwxyz" #原始转码
l = len(message)
l1 = []
l2 = []
lns = []
for i in range(0, l):
d = s.find(message[i]) #字母转数字
l1.append(d)
for i in range(0, len(message)):
c = (l1[i] - key) % len(s) #caesar解码核心
l2.append(c)
ln = len(l2)
for i in range(0, ln):
d = s[l2[i]] #输出数字转字母
lns.append(d)
l3 = lns
return(''.join(l3))
有人可能会想知道为什么“我”不使用list.clear()(或诸如此类的方式)清理垃圾–原因不详。
使用起来非常简单,可以是终端、命令行交互端、程序(import caesar)。
例如:
命令行交互端:
>>> import caesar
>>> caesar.encrypt(‘test’,3)
‘whvw’
>>>
程序:
……
如果对本程序有任何问题,欢迎留言。