替换密码的解密算法



令Z_10 = {0,1,2,3,4,5,6,7,8,9}
我在这里有一个对称加密方案,其中
消息M = M[1]M[2]M[3]M[4]在Z_10中,是一个四位字符串,
密钥π <- Perm(Z_10)是Z_10上的随机排列,
密文C = C[1]C[2]C[3]C[4] = E_π(M)在Z_10中,计算如下:

Alg E_π(M)
For i=1,...,4 do
P[i] <- (M[i] + i) mod 10
C[i] <- π(P[i])
Return C

这是正确的解密算法吗?

Alg D_π(M)
For i=1,...,4 do
P[i] <- (C[i] - i) mod 10
M[i] <- π^(-1)(P[i])
Return M

我相信这是一个替换密码,但我不确定。这是一个替换密码吗?我们怎么知道的?

加密算法中似乎有一个错误:您要么需要mod 11,要么更可能需要Z_10 = {0,...9}。否则,操作

P[i] <- (M[i] + i) mod 10

010转化为1,使其不可逆。

除此之外,是的,根据定义,它是一个替换密码,因为输入字母表的每个字符总是被相同的相应输出字符替换。您甚至可以用表替换加密逻辑。

您还需要反转解密部分中操作的顺序:首先反转排列,然后是模加法。

最新更新