Python 密码学 - 换位密码
换位密码是一种密码算法,其中明文中的字母顺序被重新排列以形成密文。 在此过程中,不包括实际的纯文本字母表。
示例
换位密码的一个简单示例是列换位密码,其中明文中的每个字符都以指定的字母宽度水平书写。 密码是竖写的,这会创建一个完全不同的密文。
考虑纯文本hello world,让我们应用简单的列换位密码技术,如下所示
明文字符水平放置,密文以垂直格式创建为:holewdlo lr。现在,接收方必须使用相同的表将密文解密为明文。
代码
以下程序代码演示了列换位技术的基本实现 −
def split_len(seq, length): return [seq[i:i + length] for i in range(0, len(seq), length)] def encode(key, plaintext): order = { int(val): num for num, val in enumerate(key) } ciphertext = '' for index in sorted(order.keys()): for part in split_len(plaintext, len(key)): try:ciphertext += part[order[index]] except IndexError: continue return ciphertext print(encode('3214', 'HELLO'))
说明
使用函数split_len(),我们可以拆分纯文本字符,可以按列或行格式放置。
encode 方法有助于使用指定列数的密钥创建密文,并通过读取每一列中的字符来打印密文。
输出
列换位技术基本实现的程序代码给出以下输出 −
注意 − 密码分析师观察到,当执行换位技术时,密码安全性有了显着提高。 他们还指出,使用相同的换位密码重新加密密文可以提高安全性。