如何计算Hill Cipher算法中的逆键矩阵?

时间:2009-06-06 17:46:34

标签: algorithm cryptography encryption matrix-inverse

我发现很难理解在Hill Cipher算法中计算矩阵的逆矩阵的方式。我知道这一切都是在模运算中完成的,但不知怎的,事情并没有增加。我真的很感激一个简单的解释!

考虑以下Hill Cipher密钥矩阵:

 5 8 
17 3

请使用上面的矩阵进行说明。

2 个答案:

答案 0 :(得分:19)

您必须学习属于Linear congruence theoremextended GCD algorithmNumber Theory,才能了解modulo arithmetic背后的数学知识。

矩阵K的逆是例如(1 / det(K))* adjoint(K),其中det(K)<> 0

我假设您不理解如何计算模运算中的1/det(K),这里是线性同余和GCD发挥作用的地方。

你的K有det(K)= - 121。让我们说模m是26.我们想要 x *( - 121)= 1(mod 26)。
[a = b(mod m)意味着ab = N * M]

我们可以很容易地发现,对于 x = 3 ,上述同余是正确的,因为26完全划分(3 *( - 121)-1)。当然,正确的方法是反向使用GCD来计算x,但我没有时间解释它是如何做的。检查扩展的GCD算法:)

现在,inv(K)= 3 *([3 -8],[ - 17 5])(mod 26)=([9 -24],[ - 51 15])(mod 26)= ([9 2],[1 15])


更新:查看Basics of Computational Number Theory,了解如何使用Extended Euclidean算法计算模块化逆。请注意-121 mod 26 = 9,因此对于gcd(9, 26) = 1,我们会得到(-1, 3)

答案 1 :(得分:0)

在我非常谦虚的意见中,通过使用Gauss-Jordan方法计算逆矩阵(模块化或其他)更容易。这样您就不必计算行列式,并且该方法可以非常简单地扩展到任意大型系统。

只需查看'Gauss Jordan Matrix Inverse' - 但总而言之,您只需将一个单位矩阵的副本连接到要反转的矩阵右侧,然后使用行操作来减少矩阵的求解,直到它本身为止是一个单位矩阵。此时,相邻的单位矩阵已成为原始矩阵的逆矩阵。瞧!