维吉尼亚密码加密和解密算法的实现

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

《维吉尼亚密码加密和解密算法的实现》
《维吉尼亚密码加密和解密算法的实现》

    原文作者:维吉尼亚加密问题
    原文地址: https://blog.csdn.net/chenchuwai/article/details/79915460
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞