首页 > 解决方案 > 替代密码的解密算法

问题描述

让 Z_10 = {0,1,2,3,4,5,6,7,8,9}
我这里有一个对称加密方案,其中
消息 M = M[1]M[2]M[3]M [4]在Z_10中,是一个四位数的字符串,
一个key π <- 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

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

标签: securitycryptography

解决方案


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

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

0和转换101,使其不可逆转。

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

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


推荐阅读