陕西理工学院毕业论文(设计)
(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文件的作者和日期等 。
⑦ 函数体:为清晰起见,它与前面的注释以“空”行相隔。
第7页 共41页
陕西理工学院毕业论文(设计)
2.2.2 函数调用和参数传递
(1)局部变量和全局变量:
① 局部(Local)变量:它存在于函数空间内部的中间变量,产生于该函数的运行过程中,
其影响范围也仅限于该函数本身 。
② 全局(Global)变量:通过 global 指令,MATLAB也允许几个不同的函数空间以及基
本工作空间共享同一个变量,这种被共享的变量称为全局变量。
(2)函数调用:
① 在MATLAB中,调用函数的常用形式是:
[输出参数1,输出参数2,?] = 函数名(输入参数1,输入参数2, ?)
② 函数调用可以嵌套,一个函数可以调用别的函数,甚至调用它自己 (递归调用)。 (3)参数传递:
① MATLAB在函数调用上有一个与众不同之处 :函数所传递的参数具有可调性 。 ② 传递参数数目的可调性来源于如下两个MATLAB永久变量: ③ 函数体内的 nargin 给出调用该函数时的输入参数数目。 ④ 函数体内的 nargout 给出调用该函数时的输出参数数目。
⑤ 只要在函数文件中包括这两个变量,就可以知道该函数文件调用时的输入参数和输出参
数数目。
⑥ 值得注意:nargin、 nargout 本身都是函数,不是变量,所以用户不能赋值,也不能
显示。
⑦ “变长度”输入输出宗量:varargin 、 varrgout。具有接受 “任意多输入” 、返回
“任意多输出”的能力 。
⑧ 跨空间变量传递:evalin。
2.2.3 M文件的调试
(1)编写 M文件时,错误(Bug)在所难免。错误有两种:语法(Syntax)错误和运行(Run-time)错误。
(2)语法错误是指变量名、函数名的误写,标点符号的缺、漏等。对于这类错误,通常能在运行时发现,终止执行,并给出相应的错误原因以及所在行号。
(3)运行错误是算法本身引起的,发生在运行过程中。相对语法错误而言,运行错误较难处理 。尤其是M函数文件,它一旦运行停止,其中间变量被删除一空,错误很难查找。
(4)有两种调试方法:直接调试法和工具调试法。 (5)直接调试法:可以用下面方法发现某些运行错误。
(6)在M文件中,将某些语句后面的分号去掉, 迫使M文件输出一些中间计算结果,以便发现可能的错误。
第8页 共41页
陕西理工学院毕业论文(设计)
(7)在适当的位置,添加显示某些关键变量值的语句(包括使用 disp 在内)。
(8)利用 echo 指令,使运行时在屏幕上逐行显示文件内容。echo on 能显示M脚本文件;echo FunNsme on 能显示名为FunNsme 的M函数文件。
(9)在原M脚本或函数文件的适当位置,增添指令 keyboard 。 keyboard 语句可以设置程序的断点 。
(10)通过将原M函数文件的函数申明行注释掉,可使一个中间变量难于观察的M函数文件变为一个所有变量都保留在基本工作空间中的M脚本文件。
第9页 共41页
陕西理工学院毕业论文(设计)
3 RSA公钥密码体制
3.1 算法简介
公钥加密算法的典型代表是RSA (Rivest , Shamir , Adelman)算法 ,它是公共密钥机制中的一种比较成熟的算法。它是建立在“大数分解和素数据检测”的理论基础上的,两个大素数相乘在计算机上是容易实现的, 但将该乘积分解成两个素数因子的计算量却相当巨大, 大到甚至在计算机上不可能实现,所以就确保了RSA算法的安全性。
RSA算法是第一个既能用于数据加密又能用于数字签名的算法, 它为公用网络上信息的加密和鉴别提供了一种基本的方法,因此对它的开发和研究对我们进行知识总结和积累并将所学与实际相结合都有重大的实际意义。 3.2 算法的数学基础
基于RSA算法的数学定理:
定义:设m 是正整数,1,2,3,?,m 中与m 互素的数的个数记作?(m),称为欧拉函数。 定理1(欧拉定理) 若整数a和m 互素,即gcd(a,m)=1,则
a?(m)?1(modm)
特别当p为素数时,对任意的a,有
ap?1(modp)
定理2 若m?1, gcd(a,m)=1,则存在c,使得 ca?1(modm),称c 为a 的模m 的逆,记作a(modm) 定理3 若, a?b(modm1),a?b(modm2),?, a?b(modmk),则有 a?bmod(m1m2...mk)
定理4 (中国剩余定理) 设: m1,m2,...,mk是两两互素的正整数,则对任意的整数a1,a2,...,ak,一次同余方程组:
?1x?ai(modmi) (i=1,2,?,k)对模[:m1,m2,...,mk] 有惟一解,
x?M1M1?1a1?MkMk?1ak(modm),m?mjMj(1?j?k)
Mj?1是满足MjMj?1?1(modmj),1?j?k 的一个整数,即Mj?1对模Mj的逆。
3.3 RSA公钥密码算法 3.3.1 算法步骤
首先,产生密钥
(1)随机选取两个大素数p与q;
(2)计算n=p*q(公开),Φ(n)=(p-1)*(q-1)(保密); (3)随机选取正整数e,使之满足gcd(e,Φ(n))=1,且1 (4)利用欧几里得算法计算d,使之满足ed≡1(modΦ(n)),d为保密的解密密钥; (5)用E= 其次,加密和解密,用RSA公钥密码体制加密时,先将明文数字化,然后进行分组,每组的长度不超过log(n),再每组单独加密和解密。 第10页 共41页 陕西理工学院毕业论文(设计) 加密过程如下: 假设要加密的明文组为m(0?m m=D(c)=c(mod n);m就为恢复出的明文,它应该与前面输入的待加密的明文内容一致。 RSA算法整体思路如上所示,在本文中我们就此算法过程用对应Matlab语言实现。 3.3.2 参数分析 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); 强素数定义如下:存在两个大素数p1,p2使得p1(p?1),p2(p?1);存在4 个大素数 de r1,s1,r2,s2,使得r1(p?1),s1(p1?1),r2(p2?1),s2(p2?1);称r1,s1,r2,s2为三级素数,p1,p2为 二级素数。 ② 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(e,?(n))?1的条件是很容易满足的,这是因为任意两个随机数互素的概率 为 1,如果e ,d 比较小,加、解密的速度快,也便于存储,但这必然导致安全性问题,一般的e,d 的 5第11页 共41页