比较维吉尼亚密码与移位密码的区别

比较维吉尼亚密码与移位密码的区别,第1张

难易程度不同。移位密码就是对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 加密程序、使用费杰尔算法进行编程 求源代码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10073624.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存