仿射密码的原理、实现与破解
1. 仿射密码的密钥计算与验证
仿射密码与仅使用一个密钥进行加法运算的凯撒密码不同,它使用两个整数密钥(Key A 和 Key B)进行乘法和加法运算。为了便于记忆,我们可以通过一个数学技巧将两个密钥转换为一个密钥。
在代码中, getKeyParts() 函数用于将单个整数密钥拆分为 Key A 和 Key B:
def getKeyParts(key):
keyA = key // len(SYMBOLS)
keyB = key % len(SYMBOLS)
return (keyA, keyB)
- 例如,当密钥参数为 2894,符号集
SYMBOLS有 66 个字符时,Key A 为2894 // 66 = 43,Key B 为2894 % 66 = 56。 - 若要将 Key A 和 Key B 合并为单个密钥,可通过
(43 * 66) + 56 = 2894实现。
需要注意的是,根据香农准则,我们应假设攻击者了解加密算法的所有信息,包括符号集及其大小,加密程序的安全性仅取决于密钥的保密性。
2. 元组数据类型
在 getKeyParts() 函数中, return (keyA, keyB) 返
仿射密码原理与破解
超级会员免费看
订阅专栏 解锁全文
41

被折叠的 条评论
为什么被折叠?



