- 密码学教程
- 密码学 - 首页
- 密码学 - 起源
- 密码学 - 历史
- 密码学 - 原理
- 密码学 - 应用
- 密码学 - 优点与缺点
- 密码学 - 现代
- 密码学 - 传统密码
- 密码学 - 加密的需求
- 密码学 - 双重强度加密
- 密码系统
- 密码系统
- 密码系统 - 组成部分
- 密码系统攻击
- 密码系统 - 彩虹表攻击
- 密码系统 - 字典攻击
- 密码系统 - 暴力攻击
- 密码系统 - 密码分析技术
- 密码学类型
- 密码系统 - 类型
- 公钥加密
- 现代对称密钥加密
- 密码学哈希函数
- 密钥管理
- 密码系统 - 密钥生成
- 密码系统 - 密钥存储
- 密码系统 - 密钥分发
- 密码系统 - 密钥撤销
- 分组密码
- 密码系统 - 流密码
- 密码学 - 分组密码
- 密码学 - Feistel 分组密码
- 分组密码的操作模式
- 分组密码的操作模式
- 电子密码本 (ECB) 模式
- 密码分组链接 (CBC) 模式
- 密码反馈 (CFB) 模式
- 输出反馈 (OFB) 模式
- 计数器 (CTR) 模式
- 经典密码
- 密码学 - 反向密码
- 密码学 - 凯撒密码
- 密码学 - ROT13 算法
- 密码学 - 转置密码
- 密码学 - 加密转置密码
- 密码学 - 解密转置密码
- 密码学 - 乘法密码
- 密码学 - 仿射密码
- 密码学 - 简单替换密码
- 密码学 - 简单替换密码加密
- 密码学 - 简单替换密码解密
- 密码学 - 维吉尼亚密码
- 密码学 - 维吉尼亚密码实现
- 现代密码
- Base64 编码与解码
- 密码学 - XOR 加密
- 替换技术
- 密码学 - 单字母替换密码
- 密码学 - 单字母替换密码破解
- 密码学 - 多字母替换密码
- 密码学 - Playfair 密码
- 密码学 - Hill 密码
- 多字母替换密码
- 密码学 - 一次性密码本密码
- 一次性密码本密码的实现
- 密码学 - 转置技术
- 密码学 - 栅栏密码
- 密码学 - 列置换密码
- 密码学 -隐写术
- 对称算法
- 密码学 - 数据加密
- 密码学 - 加密算法
- 密码学 - 数据加密标准 (DES)
- 密码学 - 三重 DES
- 密码学 - 双重 DES
- 高级加密标准 (AES)
- 密码学 - AES 结构
- 密码学 - AES 变换函数
- 密码学 - 字节替换变换
- 密码学 - 行移位变换
- 密码学 - 列混淆变换
- 密码学 - 轮密钥加变换
- 密码学 - AES 密钥扩展算法
- 密码学 - Blowfish 算法
- 密码学 - SHA 算法
- 密码学 - RC4 算法
- 密码学 - Camellia 加密算法
- 密码学 - ChaCha20 加密算法
- 密码学 - CAST5 加密算法
- 密码学 - SEED 加密算法
- 密码学 - SM4 加密算法
- IDEA - 国际数据加密算法
- 公钥(非对称)密码算法
- 密码学 - RSA 算法
- 密码学 - RSA 加密
- 密码学 - RSA 解密
- 密码学 - 创建 RSA 密钥
- 密码学 - RSA 密码破解
- 密码学 - ECDSA 算法
- 密码学 - DSA 算法
- 密码学 - Diffie-Hellman 算法
- 密码学中的数据完整性
- 密码学中的数据完整性
- 消息认证
- 密码学数字签名
- 公钥基础设施 (PKI)
- 哈希
- MD5(消息摘要算法 5)
- SHA-1(安全哈希算法 1)
- SHA-256(安全哈希算法 256 位)
- SHA-512(安全哈希算法 512 位)
- SHA-3(安全哈希算法 3)
- 哈希密码
- Bcrypt 哈希模块
- 现代密码学
- 量子密码学
- 后量子密码学
- 密码协议
- 密码学 - SSL/TLS 协议
- 密码学 - SSH 协议
- 密码学 - IPsec 协议
- 密码学 - PGP 协议
- 图像和文件加密
- 密码学 - 图像
- 密码学 - 文件
- 隐写术 - 图像
- 文件加密和解密
- 密码学 - 文件加密
- 密码学 - 文件解密
- 物联网中的密码学
- 物联网安全挑战、威胁和攻击
- 物联网安全的密码技术
- 物联网设备的通信协议
- 常用的密码技术
- 自定义构建密码算法(混合密码)
- 云密码学
- 量子密码学
- 密码学中的图像隐写术
- DNA 密码学
- 密码学中的一次性密码 (OTP) 算法
- 区别
- 密码学 - MD5 vs SHA1
- 密码学 - RSA vs DSA
- 密码学 - RSA vs Diffie-Hellman
- 密码学 vs 密码学
- 密码学 - 密码学 vs 密码分析
- 密码学 - 经典 vs 量子
- 密码学 vs 隐写术
- 密码学 vs 加密
- 密码学 vs 网络安全
- 密码学 - 流密码 vs 分组密码
- 密码学 - AES vs DES 密码
- 密码学 - 对称 vs 非对称
- 密码学有用资源
- 密码学 - 快速指南
- 密码学 - 讨论
密码学 - 转置密码
现在让我们讨论转置密码算法。到目前为止我们使用的密码都是替换密码,其中明文中的字符被更改为其他字符、数字或符号。转置密码是一种附加类型的密码。转置密码重新排列明文消息中的字母,同时仍然使用它们。
转置密码应该很容易识别,因为字母频率应该类似于英语,字母 a、e、i、n、o、r、s 和 t 的频率很高。然而,转置密码可能难以进行密码分析。关键词策略是将密文字母重新排列成“有意义的”文字,即字母的重新排列模式包含了密码的秘密。
例如,单词 LAUGH 有五个不同的字母。五个不同的字母可以以 5! = 120 种方式排列,并且恰好有一种排列应该构成一个单词。暴力攻击将尝试不同的字母组合,直到识别出该单词;最多需要 120 次尝试。利用语言模式来连接单词片段并将其排列以构成单词是一种更有效的策略。
在本章中,我们将看到不同类型的转置密码算法、它们的工作原理以及它们以不同方式的实现。
转置密码是如何工作的?
正如我们上面所看到的,转置密码的工作原理是根据特定的模式或规则重新排列消息中的字母。所以让我们假设你有一条消息“HELLO”,你想保密。我们不是更改字母本身,而是根据规则重新排列它们。
例如,让我们假设规则是在具有特定列数的网格中写入消息。如果我们使用 2 列,“HELLO”将变成:
现在,我们将以不同的顺序读取给定的列,例如从左到右,从上到下。因此,加密后的消息将是“HLOEL”。
要解密它,我们只需要知道用于重新排列字母的规则。在本例中,我们知道它是一个 2 列的网格,因此我们将字母重新排列回“HELLO”。
这就是转置密码工作原理的主要概念。这就像以秘密的方式玩一个重新排列字母的游戏。
转置密码算法类型
栅栏密码 - 称为“栅栏”密码的转置密码的名称来源于其编码方式。栅栏密码的明文向下写在虚构栅栏的连续“栏”上,在底部向上移动。然后,读出消息的行。
路线密码 - 路线密码在将明文写入给定维度的网格后,按照密钥中给出的模式读取明文。与栅栏密码相比,路线密码的密钥要多得多。实际上,即使使用目前的科技,对于合适长度的消息,可能的密钥数量也可能过大。但并非所有密钥都是平等的。路线选择不当会导致明文的大部分内容只是被反转——这将为密码分析员提供关于路线的线索。
列置换密码 - 当消息逐列转置时,它以特定长度的行写出,然后再次读取,并按不规则顺序选择列。在大多数情况下,关键字同时定义行宽和列排列。不规则列置换密码中的任何空位置都保持未填充,而在标准列置换密码中,空格用空值填充。最后,消息按关键字指定的顺序逐列读出。
双重转置 - 攻击单一列置换的一种方法是估计可能的列长,将消息写入其列中,然后搜索可能的字谜。因此,经常使用双重转置来增强其强度。这里所做的只是两次列置换。对于两次转置,可以使用一个密钥或两个单独的密钥。
密斯基沃斯基转置法 − Emile Victor Theodore Myszkowski 在 1902 年创建了一种变体的列式转置法,但它需要一个包含重复字母的关键词。通常情况下,当关键词中的字母重复出现时,会被视为字母表中的下一个字母。
扰乱转置法 − 在扰乱转置法中,某些网格点会被空出不用,在填充明文时跳过这些点。这会扰乱规则模式,增加密码分析师的任务难度。
格栅:格栅,或带有切口的实际遮罩,是一种不同类型的转置密码,它不依赖于数学公式。通信双方必须保持物理密钥的机密性,才能实现高度不规则的转置,这种转置的持续时间由格栅的大小决定。
检测和密码分析 − 密码分析师可以使用频率计数来快速识别基本的转置密码,因为它不会影响单个符号的频率。如果密文的频率分布与明文的频率分布匹配,则很可能是一种转置密码。一种常见的攻击方法是字母改组,它涉及到移动密文的部分内容,寻找看起来像是英语单词的字母组合,然后解决这些字母组合。一旦找到这样的字母组合,就可以扩展它们,因为它们提供了关于转置模式的信息。
组合 − 转置法经常与其他方法结合使用。例如,可以通过将列式转置与简单的替换密码结合起来来避免两者的弱点。由于转置的存在,当高频密文字母被替换为高频明文字母时,明文的部分内容仍然隐藏起来。这种替换使得无法对转置进行字母改组翻译。这种方法与分馏法结合使用时非常有效。
分馏法 − 当使用分馏法时,转置法可以很好地工作,分馏法是一个预先的步骤,它将每个明文字符分成多个密文字符。例如,可以将明文字母表在一个网格中打出来,然后用每个字母在消息中的坐标来替换它。另一种分馏消息的方法是简单地将消息翻译成摩尔斯电码,摩尔斯电码使用点、划和空格符号。
使用 Python 实现
此实现向您展示了如何使用 Python 中给定的密钥对消息进行加密和解密。这是这种密码学的非常基本的实现。代码中使用的密钥显示了加密和解密网格的行数。
示例
以下是使用 Python 的转置密码的基本实现。请检查下面的代码 −
def transposition_encrypt(message, key): # Create an empty grid grid = [''] * key # Fill the grid with the message for i, char in enumerate(message): row = i % key grid[row] += char # Join the rows together encrypted_msg = ''.join(grid) return encrypted_msg def transposition_decrypt(encrypted_msg, key): # Calculate the number of columns cols = len(encrypted_msg) // key # Create an empty grid grid = [''] * key # Fill the grid for i in range(cols): for j in range(key): grid[j] += encrypted_msg[i * key + j] # Join the columns decrypted_msg = ''.join(grid) return decrypted_msg # function execution message = "HI THIS IS RIYA" key = 2 encrypted_msg = transposition_encrypt(message, key) print("The Encrypted message:", encrypted_msg) decrypted_msg = transposition_decrypt(encrypted_msg, key) print("The Decrypted message:", decrypted_msg)
以下是上述示例的输出 −
输入/输出
Encrypted message: H HSI IAITI SRY Decrypted message: HHIIIIS S AT R
转置密码的特性
以下是转置密码的一些特定特性 −
转置密码很容易被破解,因为它只重新排列字母,而不是改变它们。
还有其他重新排列字母的方法,例如将它们写在网格中或将它们移到特定距离。
要解码消息,我们必须理解应用于字母重新排列的算法或模式。
缺点
正如我们所看到的,与其他一些加密方法相比,转置密码并不十分安全。原因如下 −
此技术只改变字母的顺序,这意味着黑客很容易找出模式并解密消息。
由于我们不改变字母,因此可以找出字母的频率并猜测用于重新排列它们的模式。
转置密码的安全性主要依赖于保持重新排列字母的方法的秘密。如果模式或规则已知,则可以轻松解密消息。
它不适用于大型消息,因为重新排列过程可能非常耗时。
总而言之,转置密码简单易用,但其简单性使其在保护敏感数据方面安全性较低。
总结
在本章中,我们学习了转置密码,其工作机制、特性、缺点以及在 Python 中的基本实现。在接下来的章节中,我们将学习转置密码的加密和解密算法。