本文主要解决古典密码中的Hill体制密码在已知明文M和密文C的情况下求解密钥矩阵K的两种方法:①求逆矩阵②待定系数法。
如若不懂Hill体制的古典密码可以参照我上一篇文章密码学——几种典型的古典密码体制(Caesar体制、Playfair体制、Vigenere体制、Beaufort体制以及Hill体制)

文章目录

  • 引入题目
  • 一、求解逆矩阵
  • 二、求解方法
    • 1.逆矩阵求解法
    • 2.待定系数求解法
  • 结束语

引入题目

设英文字母A,B,C,…,Z分别对应编码为0,1,2,…,25。已知Hill密码中的明文长度为2,密钥K为Z26Z_{26}Z26​上的一个二阶可逆方阵,现给出明文FRID,所对应的密文为PQCF,试求解密钥矩阵K


一、求解逆矩阵

此处只是简单的描述线性代数中求解逆矩阵的步骤
设矩阵M=(51783)M=\begin {pmatrix}5 & 17 \\ 8 &3 \end{pmatrix} \\ M=(58​173​)
解:①∣M∣=5×3−8×17=−121=9(mod26)\vert M \vert =5\times3-8\times17=-121=9\ (mod\ 26) ∣M∣=5×3−8×17=−121=9 (mod 26)注意,在模运算中-121模26等同于9模26∣M∣−1=3(mod26)∵3×9=27≡1(mod26)\vert M \vert^{-1} =3\ (mod\ 26) \because 3\times 9=27\equiv1\ (mod\ 26)∣M∣−1=3 (mod 26)∵3×9=27≡1 (mod 26)注意,在模运算中逆元的求解为相乘模26余1

②M∗=(3−17−85)M^*=\begin {pmatrix}3 & -17 \\ -8 &5 \end{pmatrix} \\ M∗=(3−8​−175​)注意,此处的M∗M^*M∗表示的是M的代数余子式,如若不知如何求代数余子式可以去搜查有关知识,此处有个方便的小tips:主对角线交换位置,副对角线变为负(仅限2x2矩阵的代数余子式)
③M−1=∣M∣−1⋅M∗=3⋅(3−17−85)=(91215)M^{-1}=\vert M \vert^{-1} \cdot M^*=3\cdot \begin {pmatrix}3 & -17 \\ -8 &5 \end{pmatrix} =\begin {pmatrix}9 & 1 \\ 2 &15 \end{pmatrix} \\ M−1=∣M∣−1⋅M∗=3⋅(3−8​−175​)=(92​115​)注意,此处都是进行了模26的操作,所以结果都为正数

二、求解方法

1.逆矩阵求解法

解:
①因为明文分组长度为2,所以明文、密文向量每一组的列数为2。
明文∵F→5,R→17,I→8,D→3\because F\to 5,R \to 17,I\to 8,D\to 3∵F→5,R→17,I→8,D→3密文P→15,Q→16,C→2,F→5P\to 15,Q \to 16,C\to 2,F\to 5P→15,Q→16,C→2,F→5注意,此处的数字是字母对应Z26Z_{26}Z26​上的数字
所以明文向量(5,17)(8,3)密文向量(15,16)(2,5)
∵c=mKmod26\because c=mK\ mod\ 26 ∵c=mK mod 26∴(15,16)=(5,17)K,(2,5)=(8,3)K\therefore (15,16)=(5,17)K,(2,5)=(8,3)K∴(15,16)=(5,17)K,(2,5)=(8,3)K
故(151625)=(51783)K\begin {pmatrix}15 & 16 \\ 2 &5 \end{pmatrix} = \begin {pmatrix}5 & 17 \\ 8 &3\end{pmatrix} K (152​165​)=(58​173​)K注意,整合为一个矩阵的时候一定要行向量对应
由c=mKmod26c=mK\ mod\ 26c=mK mod 26,得m−1c=m−1mK=Km^{-1}c=m^{-1}mK=Km−1c=m−1mK=K 注意,某数和其逆元相乘的结果是单位E,也就是1
②求解明文的逆矩阵如前面一、求解逆矩阵所示,此处不赘述。
③带入逆矩阵求得结果K=m−1c=(91215)(151625)=(9×15+1×29×16+1×52×15+15×22×16+15×5)=(13714960107)=(71983)mod26K=m^{-1}c\\= \begin {pmatrix}9 & 1 \\ 2 &15 \end{pmatrix} \begin {pmatrix}15 & 16 \\ 2 &5\end{pmatrix} \\= \begin {pmatrix}9\times15+1\times2 & 9\times16+1\times5\\ 2\times15+15\times2 &2\times16+15\times5\end{pmatrix}\\=\begin {pmatrix}137 & 149 \\ 60 &107 \end{pmatrix} \\=\begin {pmatrix}7 & 19 \\ 8 &3 \end{pmatrix}\ mod\ 26K=m−1c=(92​115​)(152​165​)=(9×15+1×22×15+15×2​9×16+1×52×16+15×5​)=(13760​149107​)=(78​193​) mod 26
故密钥K为(71983)\begin {pmatrix}7 & 19 \\ 8 &3 \end{pmatrix}(78​193​)

2.待定系数求解法

解:
设密钥矩阵K为(k11k12k21k22)\begin {pmatrix}k_{11} & k_{12} \\ k_{21} &k_{22} \end{pmatrix}(k11​k21​​k12​k22​​),根据(151625)=(51783)(k11k12k21k22)\begin {pmatrix}15 & 16 \\ 2 &5 \end{pmatrix} = \begin {pmatrix}5 & 17 \\ 8 &3\end{pmatrix} \begin {pmatrix}k_{11} & k_{12} \\ k_{21} &k_{22} \end{pmatrix}(152​165​)=(58​173​)(k11​k21​​k12​k22​​)得{5k11+17k21≡15mod265k12+17k22≡16mod268k11+3k21≡2mod268k12+3k22≡5mod26⇒{40k11+136k21≡120mod26①40k11+15k21≡10mod26②40k12+136k22≡128mod26③40k12+15k22≡25mod26④\begin{cases} 5k_{11}+17k_{21}\equiv15\ mod\ 26\\ 5k_{12}+17k_{22}\equiv16\ mod\ 26\\ 8k_{11}+3k_{21}\equiv2\ mod\ 26\\ 8k_{12}+3k_{22}\equiv5\ mod\ 26 \end{cases} \Rightarrow \begin{cases} 40k_{11}+136k_{21}\equiv120\ mod\ 26\ ①\\ 40k_{11}+15k_{21}\equiv10\ mod\ 26\ ②\\ 40k_{12}+136k_{22}\equiv128\ mod\ 26\ ③\\ 40k_{12}+15k_{22}\equiv25\ mod\ 26\ ④ \end{cases} ⎩⎨⎧​5k11​+17k21​≡15 mod 265k12​+17k22​≡16 mod 268k11​+3k21​≡2 mod 268k12​+3k22​≡5 mod 26​⇒⎩⎨⎧​40k11​+136k21​≡120 mod 26 ①40k11​+15k21​≡10 mod 26 ②40k12​+136k22​≡128 mod 26 ③40k12​+15k22​≡25 mod 26 ④​
①−②,③−④⇒{121k21≡110mod26121k22≡103mod26①-②,③-④\Rightarrow \begin{cases} 121k_{21}\equiv110\ mod26\\ 121k_{22}\equiv103\ mod26\\ \end{cases} ①−②,③−④⇒{121k21​≡110 mod26121k22​≡103 mod26​
⇒{17k21≡6mod2617k22≡25mod26⇒{k21≡23×6≡8mod26k22≡23×25≡3mod26\Rightarrow \begin{cases} 17k_{21}\equiv6\ mod26\\ 17k_{22}\equiv25\ mod26\\ \end{cases} \Rightarrow \begin{cases} k_{21}\equiv23\times6\equiv8\ mod26\\ k_{22}\equiv23\times25\equiv3\ mod26\end{cases} ⇒{17k21​≡6 mod2617k22​≡25 mod26​⇒{k21​≡23×6≡8 mod26k22​≡23×25≡3 mod26​
故带入k21,k22k_{21},k_{22}k21​,k22​的值可得
{5k11+17×8≡15mod265k12+17×8≡16mod26⇒{k11≡7mod26k12≡19mod26\begin{cases} 5k_{11}+17\times8\equiv15\ mod26\\ 5k_{12}+17\times8\equiv16\ mod26\\ \end{cases} \Rightarrow \begin{cases} k_{11}\equiv7\ mod26\\ k_{12}\equiv19\ mod26\end{cases} {5k11​+17×8≡15 mod265k12​+17×8≡16 mod26​⇒{k11​≡7 mod26k12​≡19 mod26​
故密钥K为(71983)\begin {pmatrix}7 & 19 \\ 8 &3 \end{pmatrix}(78​193​)


结束语

以上就是有关密码学的Hill体制有关已知明文和密文如何求解密钥矩阵的两种方法的介绍,希望能对读者们起到一定的作用。
如果存在错误欢迎在评论区指出,可以多多交流,大家一起进步。

密码学——Hill体制密码中已知明文M和密文C求解密钥矩阵K的两种方法之逆矩阵求解法和待定系数求解法相关推荐

  1. Java算法题目小记3:勾股定理,西方称为毕达哥拉斯定理,它所对应的三角形现在称为:直角三角形.已知直角三角形的斜边是某个整数,并且要求另外两条边也必须是整数。 求满足这个条件的不同直角三角形的个数。

    题目 勾股定理,西方称为毕达哥拉斯定理,它所对应的三角形现在称为:直角三角形. 已知直角三角形的斜边是某个整数,并且要求另外两条边也必须是整数. 求满足这个条件的不同直角三角形的个数. [数据格式] ...

  2. java mvc中重复提交表单,spring mvc 防止重复提交表单的两种方法,推荐第二种

    第一种方法:判断session中保存的token 比较麻烦,每次在提交表单时都必须传入上次的token.而且当一个页面使用ajax时,多个表单提交就会有问题. 注解Token代码: package c ...

  3. admin.php怎么登陆,怎么找回zblogPHP后台管理员登录的密码(两种方法)

    如果你把zblogPHP后台管理员登录的密码忘记了怎么办?如何找回密码呢?为了解决这个问题,刘代码接下来就介绍两种方法. 一.使用[Z-BlogPHP密码找回工具] 这是一款zblog官方开发的大杀器 ...

  4. Hill Cipher 希尔密码 已知明文密文 求秘钥方法

    Hill Cipher,已知明文密文,求秘钥 设K为秘钥, 为明文字母对应的数字矩阵, 为密文字母对应的数字矩阵. 是希尔加密的过程. 为了求解K,我们需要求解P的膜26逆元. 注意,这里是膜26逆元 ...

  5. matlab状态空间法算反馈阵,matlab中已知系统的状态方程怎样绘制系统阶跃响应曲线...

    matlab中,怎样设置坐标系统的原点在左上角? axisijx=-pi:0.1:pi;y=sin(x);plot(x,y,'g:'); 谁能帮我做Matlab的作业:分析系统能否通过状态反馈实现镇定 ...

  6. 在标准ASCII码表中,已知英文字母K的十六进制码值是4B,则二进制ASCII码1001000对应的字符是( )

    在标准ASCII码表中,已知英文字母K的十六进制码值是4B,则二进制ASCII码1001000对应的字符是( ). A. G B. H C. I D. J 提示:答案B 解析:K的十六进制4B转换成二 ...

  7. matlab二维图形中确定一点的坐标系,在CAD中已知一个平面图中两个点的坐标如何建立坐标系以便求出图形中任一点的坐标?...

    在CAD中已知一个平面图中两个点的坐标如何建立坐标系以便求出图形中任一点的坐标?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一 ...

  8. [C++]已知f(x) = cosx - x。x的初值为3.14159/4,用牛顿法求解方程f(x) = 0的近似解,要求精确到10-6。f(x)的牛顿法的表达式为xn+1 = xn + (cosxn

    (附加题)已知f(x) = cosx - x.x的初值为3.14159/4,用牛顿法求解方程f(x) = 0的近似解,要求精确到10-6.f(x)的牛顿法的表达式为xn+1 = xn + (cosxn ...

  9. 已知一个二维数组A 表示一个矩阵,求AT。 其中,AT 表示矩阵的转置。矩阵转置的含义:表示把一个矩阵行列互换。

    已知一个二维数组A 表示一个矩阵,求AT. 其中,AT 表示矩阵的转置.矩阵转置的含义:表示把一个矩阵行列互换. //传入需要验证的数组,在main里面调用该方法public static void ...

最新文章

  1. JavaScript 关闭窗口事件
  2. C标准库和glibc(C运行库)的关系
  3. 101. 最高的牛【差分 思维】
  4. 苹果x防水测试软件,iPhone终极防水测试 iPhone XR阵亡
  5. linux perl 安装目录,肿么查看linux是否安装了perl
  6. php while for 性能,php的foreach,while,for的性能比较
  7. Pycharm使用black作为Python代码格式化外部工具
  8. 云原生时代,.NET5必将称王!
  9. 将Spring Boot应用程序部署到Tomcat中
  10. LeetCode2:Add Two Numbers
  11. .net 有哪些主流的设计模式_「设计模式自习室」门面模式 Facade Pattern
  12. 使人无条件相信你的5个策略
  13. MicroPython支持SPI驱动外部Flash了
  14. oracle查看表空间里具体一张表的大小
  15. ie 代理设置中地址和端口置灰的解决办法
  16. flow.php 漏洞,php – 使用Apache的Flowplayer安全流
  17. creat是什么意思中文翻译_CREAT是什么意思中文翻译
  18. 科学健身,锻炼身体,增长肌肉
  19. 最简单的可拖拽窗口教程
  20. UITextField类对象左视图leftView无效--iOS开发

热门文章

  1. 艾滋女大学生网络日记[摘录]
  2. 空间转录组 CCST
  3. 速收藏 超系统的大数据学习路线
  4. php pager,Pear::Pager分页类简介_PHP教程
  5. 计算机页面布局与文档打印,Excel 2013中工作表的页面设置与打印——想象力电脑应用...
  6. 关于成交量,你要知道的全部在这里
  7. heroku mysql_Heroku简明教程
  8. DataEase使用透视表展示数据
  9. 采购谈判技巧:报价谈判,怎么谈你会赢?
  10. 等价无穷小的替换条件