- 密码学教程
- 密码学 - 首页
- 密码学 - 起源
- 密码学 - 历史
- 密码学 - 原理
- 密码学 - 应用
- 密码学 - 优点与缺点
- 密码学 - 现代
- 密码学 - 传统密码
- 密码学 - 加密的需求
- 密码学 - 双重强度加密
- 密码系统
- 密码系统
- 密码系统 - 组件
- 密码系统的攻击
- 密码系统 - 彩虹表攻击
- 密码系统 - 字典攻击
- 密码系统 - 暴力破解攻击
- 密码系统 - 密码分析技术
- 密码学的类型
- 密码系统 - 类型
- 公钥加密
- 现代对称密钥加密
- 密码学散列函数
- 密钥管理
- 密码系统 - 密钥生成
- 密码系统 - 密钥存储
- 密码系统 - 密钥分发
- 密码系统 - 密钥撤销
- 分组密码
- 密码系统 - 流密码
- 密码学 - 分组密码
- 密码学 - Feistel 分组密码
- 分组密码的操作模式
- 分组密码的操作模式
- 电子密码本 (ECB) 模式
- 密码分组链接 (CBC) 模式
- 密码反馈 (CFB) 模式
- 输出反馈 (OFB) 模式
- 计数器 (CTR) 模式
- 经典密码
- 密码学 - 反向密码
- 密码学 - 凯撒密码
- 密码学 - ROT13 算法
- 密码学 - 换位密码
- 密码学 - 加密换位密码
- 密码学 - 解密换位密码
- 密码学 - 乘法密码
- 密码学 - 仿射密码
- 密码学 - 简单替换密码
- 密码学 - 简单替换密码的加密
- 密码学 - 简单替换密码的解密
- 密码学 - 维吉尼亚密码
- 密码学 - 实现维吉尼亚密码
- 现代密码
- Base64 编码和解码
- 密码学 - XOR 加密
- 替换技术
- 密码学 - 单表代换密码
- 密码学 - 破解单表代换密码
- 密码学 - 多表代换密码
- 密码学 - Playfair 密码
- 密码学 - 希尔密码
- 多表代换密码
- 密码学 - 一次一密密码
- 一次一密密码的实现
- 密码学 - 换位技术
- 密码学 - 栅栏密码
- 密码学 - 列移位密码
- 密码学 - 隐写术
- 对称算法
- 密码学 - 数据加密
- 密码学 - 加密算法
- 密码学 - 数据加密标准
- 密码学 - 三重 DES
- 密码学 - 双重 DES
- 高级加密标准
- 密码学 - AES 结构
- 密码学 - AES 变换函数
- 密码学 - 字节替换变换
- 密码学 - 行移位变换
- 密码学 - 列混合变换
- 密码学 - 轮密钥加变换
- 密码学 - AES 密钥扩展算法
- 密码学 - Blowfish 算法
- 密码学 - SHA 算法
- 密码学 - RC4 算法
- 密码学 - Camellia 加密算法
- 密码学 - ChaCha20 加密算法
- 密码学 - CAST5 加密算法
- 密码学 - SEED 加密算法
- 密码学 - SM4 加密算法
- IDEA - 国际数据加密算法
- 公钥(非对称)密码学算法
- 密码学 - RSA 算法
- 密码学 - RSA 加密
- 密码学 - RSA 解密
- 密码学 - 创建 RSA 密钥
- 密码学 - 破解 RSA 密码
- 密码学 - ECDSA 算法
- 密码学 - DSA 算法
- 密码学 - Diffie-Hellman 算法
- 密码学中的数据完整性
- 密码学中的数据完整性
- 消息认证
- 密码学数字签名
- 公钥基础设施
- 散列
- MD5(消息摘要算法 5)
- SHA-1(安全散列算法 1)
- SHA-256(安全散列算法 256 位)
- SHA-512(安全散列算法 512 位)
- SHA-3(安全散列算法 3)
- 散列密码
- Bcrypt 散列模块
- 现代密码学
- 量子密码学
- 后量子密码学
- 密码学协议
- 密码学 - SSL/TLS 协议
- 密码学 - SSH 协议
- 密码学 - IPsec 协议
- 密码学 - PGP 协议
- 图像和文件加密
- 密码学 - 图像
- 密码学 - 文件
- 隐写术 - 图像
- 文件加密和解密
- 密码学 - 文件加密
- 密码学 - 文件解密
- 物联网中的密码学
- 物联网安全挑战、威胁和攻击
- 物联网安全的加密技术
- 物联网设备的通信协议
- 常用加密技术
- 自定义构建加密算法(混合加密)
- 云加密
- 量子密码学
- 密码学中的图像隐写术
- DNA 密码学
- 密码学中的一次性密码 (OTP) 算法
- 区别
- 密码学 - MD5 与 SHA1
- 密码学 - RSA 与 DSA
- 密码学 - RSA 与 Diffie-Hellman
- 密码学与密码学
- 密码学 - 密码学与密码分析
- 密码学 - 经典与量子
- 密码学与隐写术
- 密码学与加密
- 密码学与网络安全
- 密码学 - 流密码与分组密码
- 密码学 - AES 与 DES 密码
- 密码学 - 对称与非对称
- 密码学有用资源
- 密码学 - 快速指南
- 密码学 - 讨论
密码学 - 简单替换密码
如果您正在寻找一种简单且广泛使用的密码,则简单替换密码是绝佳的选择。在这个密码中,我们将学习简单替换密码到底是什么以及它如何以非常简单的方式工作。因此,基本上,在这种技术中,我们可以用相应的密文字符替换每个明文字符。与凯撒密码算法不同,简单替换密码会更改字母的顺序,因此此过程为加密过程增加了额外的复杂性。
替换密码是一种编码技术,其中密文替换预定义系统中的明文单元。 “单元”可以是单个字母(最常见)、字母对、字母三元组或上述组合。通过使用逆替换,接收者解密文本。在替换密码中,我们用不同的字母替换明文字母。
加密消息 - 加密消息需要两个要素:密钥(字母替换)和加密技术(在本例中为简单替换)。请注意,如果我们认为我们的消息不再安全,我们应该继续使用相同的技术(简单替换),但更改密钥(使用替代字母替换)。
解密消息 - 如果你知道密钥,这应该不是问题。无论密文字符按字母顺序排列是否有帮助,密钥对于加密和解密都是相同的。
例如,如果偏移量为 2,则 A 将被替换为 c,B 将变为 D,C 变为 E,依此类推。
它是如何工作的?
首先,我们必须确定字母表中哪个字母将替换每个给定的原始字母。
因此,要使用简单替换密码加密消息,我们必须用给定秘密字符映射中的相应字符替换消息中的每个字符。例如,如果“A”映射到“D”,则消息中的每个“A”都应替换为“D”,依此类推,对于每个字符。
要解密给定的编码消息,我们必须反转加密过程。因此,我们将使用秘密字母映射将每个编码字母替换为其原始字母。
秘密字母映射是密码的关键。如果不了解此映射,则很难解密消息。
示例
简单替换密码的密钥基本上包含 26 个字母。一个示例密钥为 -
| 明文字母表 | abcdefghijklmnopqrstuvwxyz |
| 密文字母表 | phqgiumeaylnofdxjkrcvstzwb |
使用上述密钥的示例加密为 -
| 明文 | hello, this world is so beautiful! |
| 密文 | gtyyj, ngzf cjpyk zf fj htvbnzdby! |
使用 Python 实现
因此,我们借助 Python 的字符串和随机模块实现了简单的替换密码。
字符串模块用于获取所有小写字母 (string.ascii_lowercase),而随机模块用于随机排列字母表。我们生成了字母表中字母的随机映射,借助给定的映射加密消息,并借助映射解密加密的消息。
示例
以下是使用 Python 的字符串和随机模块的简单替换密码算法的 Python 实现。请参见下面的程序 -
import string
import random
def generate_mapping():
alphabet = list(string.ascii_lowercase) # Get all lowercase letters
shuffled_alphabet = alphabet[:] # Make a copy of the alphabet
random.shuffle(shuffled_alphabet) # Shuffle the copy
return dict(zip(alphabet, shuffled_alphabet))
# function for encryption
def encrypt(message, mapping):
encrypted_message = ''
for char in message.lower():
if char in mapping:
encrypted_message += mapping[char]
else:
encrypted_message += char
return encrypted_message
# function for decryption
def decrypt(encrypted_message, mapping):
inverse_mapping = {v: k for k, v in mapping.items()} # Create an inverse mapping
decrypted_message = ''
for char in encrypted_message.lower():
if char in inverse_mapping:
decrypted_message += inverse_mapping[char]
else:
decrypted_message += char
return decrypted_message
# generate a random mapping
mapping = generate_mapping()
# message to encrypt
message = "Hello, world!"
# encrypt the message
encrypted_message = encrypt(message, mapping)
print("Our Encrypted Message:", encrypted_message)
# eecrypt the message
decrypted_message = decrypt(encrypted_message, mapping)
print("Our Decrypted Message:", decrypted_message)
以下是上述示例的输出 -
输入/输出
Our Encrypted Message: nsgga, taigj! Our Decrypted Message: hello, world!
缺点
此密码的基本缺点是它很容易破解。一旦攻击者发现用于替换字母的映射,他就可以轻松解码任何消息。
它也可以使用频率分析来破解。当您查看加密消息中某些字母或字母组出现的频率时,更容易猜测它。这意味着简单替换密码对于保护我们的私人数据并不是非常安全。
简单替换密码的密码分析
简单替换密码的密码分析是指解密秘密消息,该消息是一种代码,其中一个字母通常被替换为另一个字母。我们可以通过将代码的字母频率与已知的语言字母频率进行比较来对其进行解密。使用标点符号和空格等指示,以及一些典型模式,我们可以逐步解密消息。这与通过猜测哪些元素代表来解决难题相同,具体取决于它们出现的频率。
总结
在本章中,我们学习了简单替换密码及其在不同编程语言中的简单实现。替换密码非常易于理解和使用,但在安全性方面,它并不安全。其背后的原因是它的简单性:一旦攻击者破解了映射,他就可以轻松地解密任何消息。用于破解这些密码的技术之一是频率分析。因此,不建议在需要强安全性的情况下使用它。