import numpy as np
#加密函数
def Encrypt(P,key):
P=list(P)
P=map(ord,P)
P=np.array(P)
P=P-ord(‘a’)
m=len(P)/len(key)
n=len(P)%len(key)
K=key*m+key[0:n]
C=(P+K)%26
C=C+ord(‘A’)
C=map(chr,C)
C=”.join(C)
return C
#解密函数
def Decrypt(C,key):
C=list(C)
C=map(ord,C)
C=np.array(C)
C=C-ord(‘A’)
m=len(C)/len(key)
n=len(C)%len(key)
K=key*m+key[0:n]
P=(C-K)%26
P=P+ord(‘a’)
P=map(chr,P)
P=”.join(P)
return P
#主函数
#加密请按E,解密请按D
user_input=raw_input(‘E or D:’);
#输入合法性判断
while(user_input!=’E’ and user_input!=’D’):
user_input=raw_input(‘Input error, please reenter:’)
key=raw_input(‘Please enter the key:’)
while(not key.isalpha()):#输入合法性判断
key=raw_input(‘Input error,key is alpha, please reenter:’)
key=list(key)
for i in range(len(key)):
if key[i].islower():
key[i]=ord(key[i])-ord(‘a’)
else:
key[i]=ord(key[i])-ord(‘A’)
if user_input==’E’:
#加密过程
P=raw_input(‘Please enter a clear text:’)
C=Encrypt(P,key)
print ‘Ciphertext:%s’ % C
else:
#解密过程
C=raw_input(‘Please enter a Ciphertext:’)
P=Decrypt(C,key)
print ‘clear text:%s’ % P