Hill加密解密过程中关于 矩阵mod26的逆矩阵求法 matlab实现

2019-04-13 13:15发布

假设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算法的解密密钥