📅  最后修改于: 2020-11-08 08:32:24             🧑  作者: Mango
换位密码是一种加密算法,其中明文中的字母顺序会重新排列以形成密文。在此过程中,不包括实际的纯文本字母。
换位密码的一个简单示例是柱状换位密码,其中,纯文本中的每个字符均以指定的字母宽度水平书写。密码是垂直写入的,这将创建完全不同的密码文本。
考虑纯文本的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(),我们可以拆分纯文本字符,这些字符可以以列或行格式放置。
编码方法有助于创建带有指定列数的密钥的密文,并通过读取每一列中的字符来打印密文。
列换位技术的基本实现的程序代码给出以下输出-
注–当执行转置技术时,密码学家观察到了加密安全性的显着改善。他们还指出,使用相同的转置密码对密文进行重新加密可以提高安全性。