公开密钥加密算法rsa的matlab实现本科毕业论文(编辑修改稿)内容摘要:

件( Function File )。 这两种文件的扩展名,均为 “ . m”。 陕西理工学院毕业论文(设计) 第 7 页 共 41 页 ( 1) M 脚本文件 : ① 对于一些比较简单的问题 ,在指令窗中直接输入指令计算。 ② 对于复杂计算,采用 脚本文件( Script file)最为合适。 ③ MATLAB 只是按文件所写的指令执行。 ④ M 脚本文件的特点是: ⑤ 脚本文件的构成比较简单,只是一串按用户意图排列而成的(包括控制流向指令在内的)MATLAB 指令集合。 ⑥ 脚本文件运行后 ,所产生的所有变量都驻留在 MATLAB 基本工作空间( Base workspace)中。 只要用户不使用清除指令( clear), MATLAB 指令窗不关闭,这些变量将一直保存在基本工作空间中。 ( 2) M 函数文件 : ① 与脚本文件不同 ,函数文件犹如一个 “ 黑箱 ” ,把一 些数据送进并经加工处理,再把结果送出来。 ② MATLAB 提供的函数指令大部分都是由函数文件定义的。 ③ M 函数文件的特点是: ④ 从形式上看,与脚本文件不同 ,函数文件的笫一行总是以 “function” 引导的 “ 函数申明行 ”。 ⑤ 从运行上看 ,与脚本文件运行不同 ,每当函数文件运行, MATLAB 就会专门为它开辟一个临时工作空间,称为函数工作空间( Function workspace)。 当执行文件最后一条指令时 ,就结束该函数文件的运行,同时该临时函数空间及其所有的中间变量就立即被清除。 ⑥ MATLAB 允许使用比 “ 标称数目 ” 较少的输入输出宗量,实现对函数的调用。 ( 3) M 文件的一般结构 : ① 由于从结构上看 ,脚本文件只是比函数文件少一个 “ 函数申明行 ” ,所以只须描述清楚函数文件的结构。 ② 典型 M 函数文件的结构如下 : ③ 函数申明行:位于函数文件的首行,以关键 functio 开头,函数名以及函数的输入输出宗量都在这一行被定义。 ④ 笫一注释行:紧随函数申明行之后以 %开头笫一注释行。 该行供 lookfor 关键词查询和 help在线帮助使用。 ⑤ 在线帮助文本区:笫一注释行及其 之后的连续以 %开头的所有注释行构成整个在线帮助文本。 ⑥ 编写和修改记录:与在线帮助文本区相隔一个 “ 空 ” 行,也以 %开头,标志编写及修改该 M文件的作者和日期等。 ⑦ 函数体:为清晰起见,它与前面的注释以 “ 空 ” 行相隔。 陕西理工学院毕业论文(设计) 第 8 页 共 41 页 函数调用和参数传递 ( 1)局部变量和全局变量 : ① 局部( Local)变量:它存在于函数空间内部的中间变量,产生于该函数的运行过程中,其影响范围也仅限于该函数本身。 ② 全局( Global)变量:通过 global 指令, MATLAB 也允许几个不同的函数空间以及基本工作 空间共享同一个变量,这种被共享的变量称为全局变量。 ( 2)函数调用 : ① 在 MATLAB 中,调用函数的常用形式是: [输出参数 1,输出参数 2,„] = 函数名 (输入参数 1,输入参数 2, „) ② 函数调用可以嵌套,一个函数可以调用别的函数,甚至调用它自己 (递归调用)。 ( 3)参数传递 : ① MATLAB 在函数调用上有一个与众不同之处 :函数所传递的参数具有可调性。 ② 传递参数数目的可调性来源于如下两个 MATLAB 永久变量: ③ 函数体内的 nargin 给出调用该函数时的输入参数数目。 ④ 函数体内的 nargout 给出调用该函数时的输出参数数目。 ⑤ 只要在函数文件中包括这两个变量,就可以知道该函数文件调用时的输入参数和输出参数数目。 ⑥ 值得注意: nargin、 nargout 本身都是函数,不是变量,所以用户不能赋值,也不能显示。 ⑦ “ 变长度 ” 输入输出宗量: varargin 、 varrgout。 具有接受 “ 任意多输入 ” 、返回“ 任意多输出 ” 的能力。 ⑧ 跨空间变量传递: evalin。 M 文件的调试 ( 1)编写 M 文件时,错误( Bug)在所难免。 错误有两种:语 法( Syntax)错误和运行( Runtime)错误。 ( 2)语法错误是指变量名、函数名的误写,标点符号的缺、漏等。 对于这类错误,通常能在运行时发现,终止执行,并给出相应的错误原因以及所在行号。 ( 3)运行错误是算法本身引起的,发生在运行过程中。 相对语法错误而言,运行错误较难处理。 尤其是 M 函数文件,它一旦运行停止,其中间变量被删除一空,错误很难查找。 ( 4)有两种调试方法:直接调试法和工具调试法。 ( 5)直接调试法:可以用下面方法发现某些运行错误。 ( 6)在 M 文件中,将某些语句后面的分号去掉, 迫使 M 文件 输出一些中间计算结果,以便发现可能的错误。 陕西理工学院毕业论文(设计) 第 9 页 共 41 页 ( 7)在适当的位置,添加显示某些关键变量值的语句(包括使用 disp 在内)。 ( 8)利用 echo 指令,使运行时在屏幕上逐行显示文件内容。 echo on 能显示 M 脚本文件; echo FunNsme on 能显示名为 FunNsme 的 M 函数文件。 ( 9)在原 M 脚本或函数文件的适当位置,增添指令 keyboard。 keyboard 语句可以设置程序的断点。 ( 10)通过将原 M 函数文件的函数申明行注释掉,可使一个中间变量难于观察的 M 函数文件变为一个所有变量都保 留在基本工作空间中的 M 脚本文件。 陕西理工学院毕业论文(设计) 第 10 页 共 41 页 3 RSA 公钥密码体制 算法简介 公钥加密算法的典型代表是 RSA (Rivest , Shamir , Adelman)算法 , 它 是公共密钥机制中的一种比较成熟的算法。 它 是建立在“大数分解和素数据检测”的理论基础上的,两个大素数相乘在计算机上是容易实现的 , 但将该乘积分解成两个素数因子的计算量却相当巨大 , 大到甚至在计算机上不可能实现,所以就确保了 RSA算法的安全性。 RSA 算法是第一 个既能用于数据加密又能用于数字签名的算法, 它为公用网络上信息的加密和鉴别提供了一种基本的方法,因此 对它的开发和研究对我们进行知识总结和积累并将所学与实际相结合都有重大的实际意义。 算法的数学基础 基于 RSA 算法的数学定理: 定义:设 m 是正整数, 1, 2, 3,„, m 中与 m 互素的数的个数记作 ()m ,称为欧拉函数。 定理 1(欧拉定理) 若整数 a和 m 互素,即 gcd(a,m)=1,则 () 1(mod )mam  特别当 p为素数时,对任意的 a,有 1(mod )pap 定理 2 若 m 1, gcd(a,m)=1,则存在 c,使得 ca 1(modm),称 c 为 a 的模 m 的逆,记作 1a (modm) 定理 3 若 , 1(mod )a b m , 2(mod )a b m ,„ , (mod )ka b m ,则有 12m od( ... )ka b m m m 定理 4 (中国剩余定理) 设 : 12, ,..., km m m 是两两互素的正整数,则对任意的整数 12, ,..., ka a a ,一次同余方程组 : (mod )iix a m (i=1,2,„ ,k)对模 [: 12, ,..., km m m ] 有惟一解, 111 1 1 ( m o d ) ,k k kx M M a M M a m (1 )jjm m j k   1jM 是满足 1 1 ( m o d ) ,1j j jM M m j k    的一个整数,即 1jM 对模 jM 的逆。 RSA 公钥密码算法 算法步骤 首先,产生密钥 (1)随机选取两个大素数 p与 q; (2)计算 n=p*q( 公开), Φ( n) =( p1) *( q1)(保密); (3)随机选取正整数 e,使之满足 gcd(e,Φ (n))=1,且 1eΦ (n)。 (4)利用欧几里得算法计算 d,使之满足 ed≡ 1(modΦ (n)), d为保密的解密密钥。 (5)用 E=n,e作为公钥 ,用 D=n,d)作为私钥。 其次,加密和解密,用 RSA公钥密码体制加密时 ,先将明文数字化 ,然后进行分组 ,每组的长度不超过 log(n),再每组单独加密和解密。 陕西理工学院毕业论文(设计) 第 11 页 共 41 页 加密过程如下 : 假设要加密的明文组为 m(0≢ mn),加密过程就是 c=E(m)= em (mod n),c为密文。 解密过程是 : m=D(c)= dc (mod n)。 m就为恢复出的明文,它应该与前面输入的待加密的明文内容一致。 RSA 算法整体思路如上所示,在本文中我们就此算法过程用对应 Matlab 语言实现。 参数分析 RSA 算法的安全性等价于分解 n 的困难性,但是在实际的应用中,很多时候是因为算法实现的细节漏洞导致被攻击,所以在 RSA算法构造密码系统时 ,为了保证系统的安全性需要仔细地选择使用的参 数。 RSA 算法主要的参数有 3 个 :模数 n 、加密密钥 e和解密密钥 d。 ( 1)算法模 n 的确定: RSA模数 n =p*q是 RSA算法安全性的核心,如果模数 n被分解,则 RSA公钥密码体制将立刻被攻破,所以选择合适的 n是实现 RSA 算法的重要环节。 一般来讲,模数 n的选择可以遵守以下 4个原则: ① n=p*q , 要求 p 和 q 为强素数( Strong Prime); 强素数定义如下 :存在两个大素数 12,pp使得 12( 1), ( 1)p p p p; 存在 4 个大素数1 1 2 2, , ,r s r s ,使得 1 1 1 2 2 2 2( 1 ) , ( 1 ) , ( 1 ) , ( 1 )r p s p r p s p   ;称 1 2 2, , ,r s r s 为三级素数, 12,pp为二级素数。 ② p 和 q 之差要大,相差几位以上; ③ p - 1 与 q - 1 的最大公因子要小; ④ p 和 q 要足够大。 这是应用 R S A 算法要遵守的最基本原则,如果 RSA算法是安全的,则 n=p*q 必须足够大,使得因式分解模数 n 在计算上是不可 行的,下面给出的是一般性使用原则: ① 临时性( Casual) 384bit,经过努力可以破译; ② 商用性( Commercial) 512bit,可由专业组织破译; ③ 军用性( Military) 1024b it,专家预测十年内不可破译。 随着计算机能力的不断提高和分布式运算的发展,没有人敢断言具体的安全密钥长度。 ( 2)算法 e 与 d 的选取原则: 在 RSA算法中 gcd( , ( )) 1en  的条件是很容易满足的,这是因为任意两个随机数互素的概率 为 15 ,如果 e ,d 比较小,加、解密的速度快,也便于存储,但这必然导致安全性问题,一般的 e,d 的 陕西理工学院毕业论文(设计) 第 12 页 共 41 页 选取原则如下: ① e不可过小。 经验上 e 选 16位的素数,这样既可以有效地防止攻击,又有较快的加、解密速度。 ② 最好选 e 为 mod ( )n 的阶数,即存在 i ,使得 1(mod ( ))ien , i 达到,可以有效地抗击攻击。 ③ d 要大于。 选定 e 后可使用欧几里德算法在多项式 时间内计算出 d。 安全性分析 如果说 RSA 体制的安全性等价于。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。