Python 密码学 - 乘法密码

乘法密码是简单代替密码的一种。它需要预先知道消息元素的个数,加密的过程其实是相当于对明文消息所组成的数组下标进行加密,然后用明文消息中加密后位置所对应的明文字符代替。

如果使用乘法转换为密文,则称为wrap-around(环绕)情况。 考虑使用如下所示的字母和相关数字 −

关联数字

数字将用于乘法过程,关联的密钥为 7。在这种情况下用于生成乘法密码的基本公式如下 −

(Alphabet Number * key)mod(total number of alphabets)

输出取到的数字映射到上面的表中,对应的字母作为加密字母。

加密信件

Python 乘法密码的基本调制函数如下 −

def unshift(key, ch):
   offset = ord(ch) - ASC_A
   return chr(((key[0] * (offset + key[1])) % WIDTH) + ASC_A)

注意 − 乘法密码的优点是它可以处理非常大的密钥,如 8,953,851。 计算机要花相当长的时间才能暴力破解 900 万个密钥中的大部分。