转置密码



转置密码是一种密码算法,它通过重新排列明文中字母的顺序来形成密文。在这个过程中,实际的明文字母不会被更改。

示例

转置密码的一个简单示例是列置换密码,其中明文中的每个字符都以指定的字母宽度水平写入。密文则垂直写入,从而创建一个完全不同的密文。

考虑明文hello world,让我们应用如下所示的简单列置换技术

Columnar Transposition

明文字符水平放置,密文以垂直格式创建为: 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 方法帮助创建密文,密钥指定列数,并通过读取每一列的字符来打印密文。

输出

列置换技术的代码实现将给出以下输出:

Columnar Transposition Technique

注意 - 密码分析员观察到,当执行转置技术时,密码安全性得到了显著提高。他们还注意到,使用相同的转置密码对密文进行重新加密可以获得更好的安全性。

广告