难易程度不同。移位密码就是对26个字母进行移位 *** 作,可以移动任意位数,这样就实现了对明文的加密,移位 *** 作简单易行,因此,加密解密比较简单。Vigenere密码是由法国密码学家BlaisedeVigenere于1858年提出的一种代换密码,它是多表代换密码的典型代表。
#coding=utf-8
def encode_key_text(key,text):
alp='abcdefghijklmnopqrstuvwxyz0123456789 '
num_key=[alpfind(i) for i in key]
num_text=[alpfind(i) for i in text]
if len(num_key)<len(num_text):
num_long,num_short=num_text,num_key
else:
num_long,num_short=num_key,num_text
num_encode = [(num_short[i%len(num_short)]+num_long[i])%(len(alp)) for i in xrange(len(num_long))]
print num_encode
return ''join([alp[i] for i in num_encode])
if __name__=="__main__":
key='lemon'
text='attack at dawn'
print encode_key_text(key,text)
当练手了,感兴趣可以关注我的python课程
费杰尔/维热纳尔(Vigenere)密码的加密算法如下:
设
明文M=M1M2M3Mn
密钥K=K1K2K3Km
密文C=C1C2C3Cn (m>=n)
则:Ci = (Mi + Ki) % 26,(i = 1, 2, , m)
其中,令26个字母A~Z的序号对应0~25,
Ci 是密文中第i个字母的序号,
Mi 是明文中第i个字母的序号,
Ki 是密钥Key中第i个字母的序号,
注意:若密钥长度小于明文长度,则首先应循环复写密钥直至密钥长度大于等于明文长度。
例如:
M=WELL
K=ABC
则先将密钥扩展为ABCABC,再进行加密得到密文
C=WFNO
采用替代密码算法中的维吉尼亚密码方法,密文C=“HEADVIGENERE”,密钥K=KEY,求明文P
将密文HEADVIGENERE用密钥替换后为KEYKEYKEYKEY
替换前:HEADVIGENERE
替换后:KEYKEYKEYKEY
解密求明文:
按替换后的内容找到第一行的K所在位置向下寻找,找到H的位置,当前行最左侧第一列对应的就为明文X
加密求密文:
按明文找到第一列对应的H,在从第一行中找到对应的密钥K,两个位置相交的值就为密文
答案:
HEA DVI GEN ERE
KEY KEY KEY KEY
XAC TRK WAP UNG
以上就是关于比较维吉尼亚密码与移位密码的区别全部的内容,包括:比较维吉尼亚密码与移位密码的区别、Python 加密程序、使用费杰尔算法进行编程 求源代码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)