2、ce。Alice收到后,计算得到原文m。这里大素数要求足够大,通常要求是大于100位的十进制数。有资料表明,几十位的素数构造的RSA公钥密码系统是不安全的。因为位数较多,加密效率就不够高,因此,通常用来加密对称密码的密钥,例如,加密序列密码的密钥。Maple简介:Maple是一个具有强大符号运算能力、图形处理能力的交互式计算机代数系统,它可以进行各种科学计算和数学推理,它的高精度数值计算能力对于处理大数的计算和素性判定有其独特的功能。它适合于所有需要科学计算的人.。RSA算法可以实现数字签名。B向A进
3、行签名,则1、B不能否认进行了签名2、A不能篡改B的签名设A(如网站)的公钥为,私钥为B(签名者)的公钥为,私钥为,B的原文m,B用作用m,得到(m),再用A提供的作用,得到,B将C和发给A,A收到后,先用作用于C再用作用。这时,B不能否认进行了签名,因为A用B提供的算出;A不能篡改B的签名,因为B可以用A提供的和算出,而A不知道,改动后算不出上面等式。2)、RSA公钥密码算法程序流程1、A的准备工作(1)产生两个u到v位的随机数,如果是偶数,则加1,然后判别是否是素数,如果是,赋值给p,q(2)令n
4、=pq,t=(p-1)(q-1);(3)找满足,找一个不能整除t的素数,依次试除。(4)解相当于求解,将辗转相除,得到,利用,,再除以t,再赋值给d(5)将公钥n,a发送给B2、B的加密过程(1)原文m长度设为56位,远小于n,保证了(m,n)=1,加密得到密文,分m为十进制数字和字符串两种情况(2)将密文s传送给A。3、A的解密过程A收到s后,计算得到原文m。直接计算速度太慢,且溢出,先分别求解,,然后利用孙子定理解同余式组,,它的解就是原文。反复利用来计算可以大大加快运行速度。3)、基于RSA算法
5、的数字签名程序流程B向阿A进行数字签名。只需A和B都拥有密钥生成、加密和解密程序。A运行密钥生成程序,将公钥EA={n,a}发给B,将私钥保密。B运行密钥生成程序,将公钥EB={n1,a1}发给A,将私钥保密。B计算签名m<中的一个成员,使得1£d£p-2选出e1作为群G=中的一个本原根e2 ¬
6、e1dmodpC2 ¬(P´e2r)modp //C1和C2是密文Public_key ¬ (e1,e2,p) //公开宣布Private_key¬d //保密2)、解密P¬[C2(C1d)-1]modp //P是明文3)、证明[C2(C1d)-1]modp=(P´e2r)´(e1dr)-1modp=P五、实现环境WindowsxpMaple13+mapletoolbox+matlab混合编程六、编写的源程序代码1、RSA_SystemRSA_SYSTEM
7、.mfunctionvarargout=RSA_SYSTEM(varargin)gui_Singleton=1;gui_State=struct('gui_Name',mfilename,...'gui_Singleton',gui_Singleton,...'gui_OpeningFcn',@RSA_SYSTEM_OpeningFcn,...'gui_OutputFcn',@RSA_SYSTEM_OutputFcn,...'gui_LayoutFcn',[],...'gui_Callback',[]
8、);ifnargin&&ischar(varargin{1})gui_State.gui_Callback=str2func(varargin{1});endifnargout[varargout{1:nargout}]=gui_mainfcn(gui_State,varargin{:});elsegui_mainfcn(gui_State,varargin{:});endfunctionRSA_SYSTEM_OpeningFcn(hObject,eve