我发现很难理解希尔密码算法中矩阵逆的计算方式。我知道这一切都是通过模算术完成的,但不知何故,事情并没有加起来。我真的很感激一个简单的解释!
考虑以下希尔密码密钥矩阵:
5 8
17 3
请使用上面的矩阵进行说明。
你必须学习线性同余定理 http://en.wikipedia.org/wiki/Linear_congruence_theorem和扩展GCD算法 http://en.wikipedia.org/wiki/Extended_Euclidean_algorithm,属于数论 http://en.wikipedia.org/wiki/Number_theory,为了理解背后的数学模算术 http://en.wikipedia.org/wiki/Modulo_arithmetic.
例如,矩阵 K 的逆矩阵为 (1/det(K)) * adjoint(K),其中 det(K) 0。
我猜你不明白如何计算1/det(K) http://en.wikipedia.org/wiki/Modular_multiplicative_inverse在模算术中,这就是线性同余和 GCD 发挥作用的地方。
您的 K 的 det(K) = -121。假设模 m 是 26。我们想要x*(-121) = 1 (模 26)。
[ a = b (mod m) 表示 a-b = 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]).
Update:查看计算数论基础知识 http://www.math.umbc.edu/~campbell/NumbThy/Class/BasicNumbThy.html了解如何使用扩展欧几里德算法计算模逆。注意-121 mod 26 = 9
, 因此对于gcd(9, 26) = 1
we get (-1, 3)
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)