单表替换加密
## 通用特性 - 明文与密文一一对应 - 密钥空间较小的情况下,采用暴力破解方式 - 密文长度足够长的时候,使用词频分析 ## Caesar 凯撒密码加密时将明文中的每个字母都按照其在字母表中的顺序向后(或向前)移动固定数目(循环移动)得到密文,解密时将密文中的每个字母都按照其在字母表中的顺序向前(或向后)移动固定数目(循环移动)得到明文。 ### Python脚本: ```python class Caesar: name = 'caesar' value = '' # flag为偏移量 def encode(self, text, flag): for c in text: if ord('a') <= ord(c) <= ord('z'): self.value += chr((ord(c) - ord('a') + int(flag)) % 26 + ord('a')) elif ord('A') <= ord(c) <= ord('Z'): self.value += chr((ord(c) - ord('A') + int(flag)) % 26 + ord('A')) else: return 'Err' return self.value # flag为偏移量 def decode(self, text, flag): for c in text: if ord('a') <= ord(c) <= ord('z'): self.value += chr((ord(c) - ord('a') - int(flag)) % 26 + ord('a')) elif ord('A') <= ord(c) <= ord('Z'): self.value += chr((ord(c) - ord('A') - int(flag)) % 26 + ord('A')) else: return 'Err' return self.value ``` ### 凯撒密码扩展 基于密钥的凯撒密码,给定一个密钥,将密钥的每一位转换为数字(字母表对应顺序的数字),以每一位的数字作为偏移量进行加密与解密,密钥长度不够时重复密钥来补全长度。 ## Atbash Cipher 埃特巴什码使用字母表中的最后一个字母代表第一个字母,倒数第二个字母代表第二个字母,以此类推进行替换。 ### Python脚本 ```python class AtbashCipher: name = 'AtbashCipher' value = '' # 加密与解密使用同一个函数 def encode(self, text): for c in text: if ord('a') <= ord(c) <= ord('z'): self.value += chr(ord('a') + (ord('z') - ord(c))) elif ord('A') <= ord(c) <= ord('Z'): self.value += chr(ord('A') + (ord('Z') - ord(c))) else: return 'Err' return self.value ``` ## 简单替换密码 简单替换密码加密时,将每个明文字母替换为与之唯一对应且不同的字母,因此有26!种替换方式,一般采用词频分析破解。 ### 在线工具 > http://quipqiup.com/ ## 仿射密码 对明文的每个字母使用加密函数: > E(x) = (ax + b) (mod m) 其中`m`为编码系统中字母的数目(一般为26),且`a`与`m`互质 易得解密函数为: > D(x) = a^-1(x - b) (mod m) 其中`a^-1`表示`a`在`mod m`下的乘法逆元
创建时间:2023-07-26
|
最后修改:2023-12-27
|
©允许规范转载
酷酷番茄
首页
文章
友链