赞
踩
维吉尼亚密码是在代换密码(即单表代换)基础上,衍生出来的多表代换密码。
与单表代换相同,维吉尼亚密码也采用明文字母与密钥字母(即26字母表)间建立一一对应关系。
但是不同的是,单表代换密码中一旦密钥字母确定,相同的明文就只能产生唯一的密文;
而维吉尼亚密码则是在单表的基础上,加入了密钥字,使用密钥字对明文进行分组加密,因此即使密钥(打乱的字母表)确定了,密钥字不同,也会产生不同的密文,即非固定式对应。
在之后的表述中:
以<密钥>
表示26字母顺序表
以<密钥字>
表示输入的一串辅助加密的消息序列
现假定输入的密钥字为k1到km,总长为m个字母;明文为x1到xm;表字母以初始26字母顺序表为例,进行加解密说明:
维吉尼亚密码的加密定义如下:
即:
加密示例:
字母表为原始A-Z
因此00对应A
,……,25对应Z
;
输入密钥字为Computer
因此 m = 8,key =(02,14,12,15,20,19,04,17);
输入明文为Block cipher design principles。
将明文分为8个字母一组,再进行找序号求和取余的运算,得出序号对应的密文字母:
比如 B(序号为01),对应的密钥字为C(序号为02),相加为03,再模26得03(即D),因此明文的B对应的密文字母为 D 。
所有加密步骤图如下:
可得出密文为:Dzarevmgjsdylmxpddxhvmgnse
由于维吉尼亚密码也是映射型密码,因此只需要进行加密的逆过程即可解密。即:
import re
letterList = [] # 字母列表
# 初始化字母列表(此处以顺序表为例)
for i in range(ord("a"), ord("z") + 1):
letterList.append(chr(i)<
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。