面向对象程序测试与并发编程实践
1. 维吉尼亚密码加密与测试驱动开发
维吉尼亚密码是一种经典的加密算法。给定关键字“TRAIN”,对消息“ENCODED IN PYTHON”进行加密的步骤如下:
1. 重复关键字和消息,以便将字母一一对应:
E N C O D E D I N P Y T H O N T R A I N T R A I N T R A I N
- 对于明文中的每个字母,在表中找到以该字母开头的行。
- 找到与所选明文字母对应的关键字字母所在的列。
- 加密字符位于该行和该列的交叉处。
例如,以“E”开头的行与以“T”开头的列相交于字符“X”,所以密文的第一个字母是“X”。以“N”开头的行与以“R”开头的列相交于字符“E”,得到密文“XE”。完整的加密消息是“XECWQXUIVCRKHWA”。
解密过程基本相反。首先,找到共享关键字字符所在的行(“T”行),然后找到该行中加密字符(“X”)所在的位置。明文字符位于该行对应列的顶部(“E”)。
接下来,我们使用测试驱动开发(TDD)的策略来实现加密和解密方法。我们将使用 py.test
进行单元测试。
以下是具体的测试和实现代码:
# 测试加密方法
def test_encode():
cipher = VigenereCipher("TR