换位密码

Transposition Cipher是一种加密算法,其中明文中的字母顺序被重新排列以形成密文.在此过程中,不包括实际的纯文本字母.

示例

转置密码的一个简单示例是柱状转置密码其中纯文本中的每个字符都是水平写入的,具有指定的字母宽度.密码是垂直写入的,它创建了一个完全不同的密文.

考虑纯文本 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(),我们可以拆分纯文本字符,可以按柱状或行格式放置.

  • 编码方法有助于使用指定列数的密钥创建密文并通过读取每列中的字符来打印密文.

输出

程序代码对于柱状转置技术的基本实现,给出以下输出 :

Columnar Transposition Technique

注意 : 密码分析者观察到当进行转座技术时加密安全性的显着改善.他们还指出,使用相同的转置密码重新加密密文可以提高安全性.