搜索
您的当前位置:首页正文

Hill密码加密解密时矩阵的求法

2022-06-19 来源:保捱科技网
第18卷第2期 电 脑 与 信 息 技 术 V01.18 No.2 2 0 1 0年4月 Computer and Information Technology Apr.2010 文章编号:1005—1228(2010)02-0031—03 Hill密码加密解密时矩阵的求法 徐小华,黎民英 (南华大学计算机学院,湖南衡阳421001) 摘要:在计算机网络中,为了保证数据的安全,常常要对数据进行加密和解密。文章运用数学知识和Madab语言,介绍了 Hill密码加密时如何给出密钥矩阵以及解密时如何求密钥矩阵的逆,从而实现Hill密码快速加密和解密。 关键词:Hill密码;加密;解密;Matlab 7.0 中图分类号:TP309.7 文献标识码:A The Solution of Matrix of Hill Cipher in Eneryption and Deeryption XU Xiao-hua LI Min-ying (School of Computer Science and Technology.University of South China,Hengyang 421001,C}血1a) Abstract:In order to ensure data security in the computer network,people al'e likely to encrypt and decrypt data.This paper introduces the solution of the key matrix of Hill Cipher in encryption and the solution of inversion of the key matrix in decryption by mathematical knowledge and the Madab language to achieve the purpose quickly. Key words:Hill cipher;encryption;decryption;Madab 7.0 在计算机网络或军事情报中,为了保证数据的安 中 el=(Kllml+Kl2In2+…+KlJi,ll1)mod26 全,常常要对数据进行加密和解密。对数据进行加密的 c2=(K2lml+k22m2+…+K m1)rood26 方法很多,Hill密码是其中一种。Hill密码加密时就是 利用非退化的密钥矩阵K在模26的意义下进行线性 cF(Kllm1+K唧2+…+Knm1)rood26. 变换,解密时就是利用密钥矩阵K的逆矩阵 在模 或写成e=KM rood 26 26的意义下进行线性变换。但是同学们在作业时,随 其中 便给一个非退化的密钥矩阵K,对明文加密没问题,但 ml 解密时,由于在通常的数学意义下,密钥矩阵K的逆 C2 m2 矩阵K 有可能是分数,有可能在模26的意义下无整 M ,M= M 数解,往往得不出正确的明文。为保证解密时得出正确 明文,本人通过长期的计算与思考,给出加密时如何求 解密时得明文M:M=K emod26 出合适的密钥矩阵以及解密时如何求密钥矩阵的逆的 其中KK—mod 26=1,I为数学中的单位矩阵。 一些方法。 2 Hill密码加密解密算法实例分析 1 Hill密码算法介绍 由于明文、密文一般都是正整数,故密钥矩阵K Hill加密算法的基本思想是将1个明文字母通过 及其逆矩阵 的元素都应该是正整数,不能是负整 线性变换,将它们转换为1个密文字母。解密只要作一 数、分数或小数。当密钥矩阵K的行列式的值等于±1, 次逆变换就可以了。密钥就是变换矩阵本身。即设明文 即I K I=±1时,由数学知识可知,密钥矩阵K的逆矩阵 为Mmm。m …m。,经过线性变换得密文C=E (M)= 的元素是整数,若密钥矩阵K的逆矩阵K 的元素 C1C2…C o 有负整数,再对逆矩阵的所有元素加26的若干倍,再 模26,可保证密钥矩阵K的逆矩阵K 的所有元素为 收稿日期:2009—12—22 作者简介:徐小华(1966一),男,湖南衡阳人,副教授,从事《计算机密码学》教学和研究;黎民英(1963一),女,湖南衡阳人,副教授,从事计算机应用专业 课程教学和研究。 电 脑 与 信 息 技 术 2010年4月 正整数,密文解密后可得正整数明文M,与原明文M 18 18 7 2 相同。下面介绍加密时如何求出合适的密钥矩阵以及 25 2O 10 10 解密时如何求密钥矩阵的逆的方法。 K2= 13 14 26 7 为求出合适的密钥矩阵K,在一个n×n阶矩阵中 5 5 4 6 (如4×4阶矩阵中),任设二元素的值为x、Y,其余元素 1 0 0 O 给出具体的正整数数字。并令其行列式的值等于+1 1 O O 或一1,可得一个二元一次或二元二次不定方程,可求 不难验汪K'K2 rood 26= 0 0 0 l O 其正整数解。现举几例加以说明。 0 O 0 l 4 X 8 Y 故矩阵K2就是密钥矩阵K的逆矩阵 。现用密 例1如取K= 12 1 6 9 3 6 4 6 令l K l=1 钥矩阵K加密,用K2解密。 输入明文M的值:>>M=[7,14,12,4]’ 2 11 3 8 用>>C=mod(K*M,26)命令对明文M加密得密文 得:一i05x+187y=761,可参考2008年12月出版的 C=[20,24,21,21, 《计算机技术与发展》杂志第173页“二元一次不定方 故得密文C=uyvc。 程整数解之程序求法”一文,借助其Maifa/)语言程序 用>>rood(K2*C,26)命令对密文C解密得明文 解之得一正整数解:x=7,y=8。 M=【7,14,12,4]' 、 4 7 8 8 故得明文M=home,解密正确。 12 1 6 9 现取K= 3 6 4 6 对明文M=home 2 11 3 8 例2如取K= 令lK l一1 加密和解密。 若采用从a到z的26个字母依顺序从0到25编 得:一12 3  1 10+189x+14 9 5y一2xy=一1,可借助如下Matlab 号,编号如下表格。 语言程序解之,因要求x,5 7 2 4 Y都为正整数,故取x,y的范 O 1 2 3 4 5 6 7 8 9 10 11 12 围为0到1X 8  000,3 6 范围可以变化,能求到解就好。程序如 7 y 5 3 b d e f g h l● J k I m 下: forx=0:1000 - 13 14 l5 16 17 l8 19 20 21 22 23 24 25 ofr y=O:lO00 0 p q r S t w X y if(l(-1110+189 x+15 y-2 x y)=--1) 明文M=home可分别得数字化后4个数字: ntf(’x=%d,y=%dkn‘’]【,y); 7,14,12,4,即M=[7,14,12,4]’。现利用Matlab语言求解 break; end 密钥矩阵K的逆矩阵 及加密和解密。 end 设置为有理格式:>>format rat end 输入矩阵K的值:>>K=[4 7 8 8;12 1 6 9;3 6 4 6;2 解之得--t整数解:x=8,y=403。 11 3 8]; 2 5 7 用>>det(K)命令验证矩阵K的行列式的值为1 3 7 403 用>>K1=inv(K)命令从数学角度求矩阵的逆Kl 现取K: 4 2 5 对明文M=hill加密 一1l2 -34 371 -128 9 4 3 -105 -32 348 -120 K1= 和解密。 -39 -12 130 -45 若采用从a到z的26个字母依顺序从O到25编 号,编号如例1。M可分别得数字化后4个数字: 由于它的元素出现负整数,故把它的每一个元素 7,8,11,ll,即M=[7,8,ll,11]’。现利用Matlab语言求 加上26的若干倍,使它的元素全为正整数,再模26。 解密钥矩阵K的逆矩阵K 及加密和解密。 用>>K2=mod(K1+2600,26)命令得: 设置为有理格式:>>format rat 第18卷第2期 徐小华等:Hill密码加密解密时矩阵的求法 ・33・ 输入矩阵K的值:>>K=[2 5 8 7;3 7 8 403;4 2 3 5; 94 6 3】; 事实上仿例l解之,方程虽有很多解,但x,Y不可 能同为正整数,取一组整数解:x=21I,y=-46。 4 211 用>>det(K)命令验证矩阵K的行列式的值为一1. 用>>Kl=inv 命令从数学角度求矩阵K的逆 K1. 7 2 -46 6 ,得矩阵K= 9 13 11 1O 3 14 8 l2 16 l5 由于矩阵 35 7 -828 358 中出现负元素,可能导致密文中出现负数。故此矩阵不 —1oo8 201 --23778 10277 K1= 617 123 —14551 6289 5 1 —118 51 由于它的元素出现负整数,故把它的每一个元素 加上26的若干倍,使它的元素全为正整数,再模26。 用>>K2=mod(K1+26000,26)命令得: 9 7 4 2O 6 7 14 19 K2= 19 19 9 23 5 l 12 25 O 0 不难验证K'K2 mod 26= 0 1 故矩阵K2就是密钥矩阵K的逆矩阵 。现用密 钥矩阵K加密,用K2解密。 输人明文M的值:>>M=[7,8,11,11]’ 用>>C=mod M,26)命令对明文M加密得密文 C=【ll,22,2,l2】’ 故得密文C=1wcm。 用 >rood(K2*C,26)命令对密文C解密得明文 M=[7,8,11,11]’ 故得明文M=hill,解密正确。 但下列矩阵不适合Hill密码加密和解密。 4 X 7 Y 2 例3如取矩阵K= 9 lO 6 13 3 8 16 +I K I:1 l1 14 l2 15 得:278x+1066y=9622,由方程图形易知此方程的 解不可能同为正整数。 适合Hill密码加密和解密。 2 5 x 3 7 9 1 2 3 令l K I=±1 9 4 6 得:一1764+252x+105y一14xy=±1,仿例2解之,经 过计算,这样的方程无正整数解。也可用数学方法证明 这样的方程无正整数解。 3结束语 在运用Hill密码加密时,密钥矩阵K不是随便给 的,它是符合一些条件的。如果随便给一个矩阵作为密 钥矩阵K加密,那利用密钥矩阵K的逆矩阵K一-解密, 结果有可能不正确。因此必须寻找正确的方法求密钥 矩阵K及其逆矩阵K~。 本文介绍了当行列式的值等于±1的密钥矩阵K 及其逆矩阵 的求法,在矩阵K中任设两个变量元 素,其余元素任给,令其行列式的值等于±1,再求其正 整数解。如果没有正整数解,再给定元素的值。重复上 述解法,就能很容易求出密钥矩阵K及其逆矩阵 , 从而实现Hil密码快速加密和解密。 参考文献: 【1】卢开澄.计算机密码学【M】.清华大学出版社,2003. [2】张智星.MATLAB程序没汁与应用 清华大学出版社,200Z 【3】周金萍,王冉,吴斌.MATLAB6实践与提高【M】.中国电力出版社, 2OO2. 苏金明,王永利.MATLAB7.0实用指南(上册)【M1.电子工业出版 社,2004. 【5】 徐小华.二元一次不定方程整数解之程序求法【z】.计算机技术与发 展。2008。18(12):173—174. 潘承洞,潘承彪.简明数论[MJ.北京大学出版社,1998. 

因篇幅问题不能全部显示,请点此查看更多更全内容

Top