仿射密码编程与破解
仿射密码编程
仿射密码的密钥特性
在仿射密码中,密钥 A 和密钥 B 存在一些有趣的特性。仔细观察输出会发现,密钥 A 为 5 时的密文与密钥 A 为 71 时的密文相同,密钥 A 为 7 和 73、13 和 79 时也有同样的情况。这是因为 71 减去 5 等于 66,而 66 是符号集的大小。仿射密码的加密输出每 66 个密钥就会重复或循环一次,密钥 A 和密钥 B 都有这种循环效果,所以密钥 A 也受符号集大小的限制。
当 66 个可能的密钥 A 与 66 个可能的密钥 B 相乘时,会得到 4356 种可能的组合。但由于有些整数与 66 不是互质的,不能用作密钥 A,所以仿射密码实际可能的密钥组合总数降至 1320 种。
编写加密函数
在 affineCipher.py 中编写加密函数时, encryptMessage() 函数需要接收密钥和要加密的消息作为参数:
def encryptMessage(key, message):
keyA, keyB = getKeyParts(key)
checkKeys(keyA, keyB, 'encrypt')
ciphertext = ''
for symbol in message:
if symbol in SYMBOLS:
# Encrypt the symbol:
symbolIndex = SYMBOLS.find(symbol)
超级会员免费看
订阅专栏 解锁全文
1万+

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



