假设hill加密密钥(矩阵key)为
1 6 3
4 7 9
5 8 6
求hill解密密钥(解密密钥其实就是key的逆)
直接用matlab求key的-1次方求出来的结果mod26是不正确的
我的求法如下:
1.证明key mod26的逆存在
> mod( det(key) , 26)
ans = 9
//因为9和26为互素,所以可以得到key存在逆矩阵
2.用算法求
int main()
{
int i =1;
while(1)
{
if((9 * i) % 26 == 1) break;
else i++;
}
cout<
得到 3 * 9 = 1 mod(26);
3.用matlab求key的伴随矩阵
//首先定下格式
> format rat
> with = mod( (det(key) * inv(key) ) , 26)
with =
22 14 7
21 17 3
23 22 9
//matlab伴随矩阵求法为: det(a) * inv(a)
4.用伴随矩阵求key的逆
> key1 = mod( 3 * with + 2600 , 26)
key1 =
14 16 21
11 25 9
17 14 1
key1即为key的逆也就是hill算法的解密密钥