假设要发送一段消息,如“SEND MONEY”,假设编码为“5, 8, 10, 21, 7, 2, 10, 8, 3”,这里的5,8,10等分别对应消息中的S、E、N等字母。这种编码方式,很容易被破解。比如,编码中出现次数最多的8,很容易被破译为E。
可以利用矩阵进行加密操作。找到一个行列式为1的矩阵A,使用A左乘初始编码矩阵B,得到一个新矩阵,可作为加密编码矩阵。
然后,解码时,使用A的逆矩阵左乘加密编码矩阵,即可得到初始编码矩阵B。
在Excel中的演示过程为:
A | B | |||||
1 | 2 | 1 | 5 | 21 | 10 | |
2 | 5 | 3 | 8 | 7 | 8 | |
2 | 3 | 2 | 10 | 2 | 3 | |
detA | AB | |||||
1 | 31 | 37 | 29 | |||
80 | 83 | 69 | ||||
54 | 67 | 50 | ||||
A^-1 | A^-1AB | |||||
1 | -1 | 1 | 5 | 21 | 10 | |
2 | 0 | -1 | 8 | 7 | 8 | |
-4 | 1 | 1 | 10 | 2 | 3 |
其中,
detA的计算公式为:
detA |
=MDETERM(B2:D4) |
行列式计算公式的详细介绍,可参考以下文章:
https://www.excelfunctions.net/excel-mdeterm-function.html
参考文章: