信息可能被第三方确认的加密_第1页
信息可能被第三方确认的加密_第2页
信息可能被第三方确认的加密_第3页
信息可能被第三方确认的加密_第4页
全文预览已结束

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

信息可能被第三方确认的加密

1通信密码算法的应用现在,网络的快速发展使大量活动通过网络进行:经济、电子商务交易、银行交易等。政治方面:政务和黑客的存在突出了我们面前的安全问题。现实生活中,常出于需要我们要对自己的文件进行加密或解密处理,由此加密信息的应用势成必然。针对目前电子邮件中一个很重要的问题:信息可能被第三方看到!文中用一成熟的、一度为经典的RSA加密算法来设计实现了其在加密电子邮件中的应用,解决了邮件被第三方看到的问题。通常,加密邮件用户要求与自己通信的对方都能加密发给自己的信息,而这加密后的信息在自己不授权的情况下是不会被自己不希望的人看到的,即使是发给了他也是如此。而且与自己通信的人之间也是不可能看到发给自己的信息的。一句话:只有自己才能看到发给自己的信息。在现在的密码算法中已经有这样的非对称算法,RSA即是一个:它有加密发送方持有的公开密钥,而能解密的私有密钥只在密文接受方手里。另外,它还具有唯一性,安全性:私有密钥的持有人是唯一的,能够用这个密钥来加密的人就是唯一的,具有不可抵赖性!用此人的公有密钥来解密消息,若成功就能证明这个消息一定是私有密钥持有者发过来的!所以,私钥拥有者还可以用自己的密钥来进行邮件群发或者广播,而发给自己的邮件能保证只有自己才能看到。2确定逆元数的算例(1)首先,找出二个素数p,q,计算n=p*q,φ=(p-1)*(q-1)(对素数p有欧拉函数值φ为p-1);(2)接着,选择一个数e,使得Gcd(e,φ)=1并且e<φ,这里Gcd(x,y)为x,y的最大公约数。(3)求出一个逆元数d,满足e*d=1modφ(采用扩展的欧几里德算法计算)。到此,就可以确定publickey为:(e,n),privatekey为:(d,n)。加解密过程:对任一数字m,有密文c=memodn,对密文c能还原出明文c′=cdmodn=m。因为:由m<n,Euler定理和Fermat定理有:cdmodn=me*dmodn=mk*φ+1modn=mmodn=m3非对称电子邮件加密系统的设计方案和实现在加密系统的应用中,系统的关键就是安全地产生公钥和私钥并保护好自己的公钥和私钥。当然也不能向外发布自己的密钥产生过程。3.1计算机的数据及处理因为RSA算法本身只对数字进行加密或解密,因此我们所做的就是:第一,在用户输入素数p,q和数字e后,计算得到d,建立一个“密钥处理类”,它专门负责用户的数字输入处理,得到算法所需要的数字;第二,由得到的数字建立一个“数字处理类”,专门对数字进行加/解密处理。由算法决定:到这一步已经产生了公钥和私钥;第三,我们知道,计算机中所有数据都是01字符串,所以我们完全可以把计算机中的文件转化为数字,送给数字处理类进行处理,设这一处理过程被一“文件处理类”完成:把文件中的字符读取出来,用数字处理类对象的加密或解密函数进行加/解密。最后,运用这两个类对文件进行处理再在邮件中进行收发。系统流程如图1所示。3.2类代码和密钥处理的实现3.2.1加/解密对象运用面向对象的编程思想,建立一个数字处理类Carithmetic,再用它产生一个对象,利用对象的函数来进行加/解密。万一privatekey泄露了,我们只需要一个极其简单的措施:重新产生一个对象而已!为简化我们可以只设置加密、解密、求模三个函数。3.2.2逆元d的计算公钥(e,n),私钥(d,n)。生成私钥d的关键:类中的求逆元函数采用扩展的殴几里德算法计算:unsignedintExEuclid(inta,intn);//计算得到amodn的逆元;计算原理:Gcd(a,n)=Gcd(|a|,|n|);设r1=b1*amodn,b2=b2*amodn,r1=q*r2+r3,则r3=(b1–q*b2)*amodn欧几里得算法逆元d计算流程图如图2所示。对选择数字e的条件判断为:Pruduce.Gcd(e,m)=1&&e<m,m=(p-1)*(q-1),否则进行循环运算:e=e*2+1;e=e%m;直到满足条件为止。至于p,q,我们采用一个判断是否为素数的函数IsPrime(intn)来保证用户输入的是素数,具体的VC++6实现我们用Cdialog类的对象dlg1,dlg2建立一个数值变量num,num_e。判断就是运行IsPrime(dlg1.num)。同样以AfxMessageBox()的形式告诉用户Φ=(p-1)*(q-1)的值,用Gcd(dlg2.num_e,Φ)来保证输入了正确的e值。得到e,Φ后,就用ExEuclid(e,Φ)来计算逆元d。至此,就可以初始化Carithmetic类对象了:CArithmeticm_arithmetic(p,q,e,d)在程序中我们可以采用AfxMessageBox()的形式告知用户:publickey为:(e,n),privatekey为:(d,n)。3.3加密发送,接受电话“解密”有了publickey和privatekey,就可以进行加密邮件的群发:用私钥privatekey对邮件进行加密发送出去。及接受邮件:接受方可根据邮件中头部信息识别发送者身份,在公开的信息薄中查出其用于“解密”的密钥(即publickey),用publickey对密文进行一次加密运算,得到明文。具体流程图见图3。3.3.1加密或解密函数假设要发送的报文消息文件为Sendfile文件(原文),假设要解密的报文消息文件为Receivefile文件(密文),现在,我们可以产生一个新的类:它读取文件,把内容转化为一个个的数字,送给Carithmetic来进行处理。同时,它直接面对用户,因此有两个接口参数:Cstringfile,Cstringkey;file为要进行加密或解密的文件(含全路径)。类中的解密函数代码与上类似。假设加密后形成的密文为Receivefile,则解密代码为(解密后另生成同样路径下一文件):voidCCrypt::DecryptFile(CStringReceivefile,CStringprivate_key)加密代码中的ULONGc=m_arithmetic.Encode(data[j])换成BYTEc=m_arithmetic.Decode(data[j]),因为解密后是形成字符。数字加/解密类对象含有加/解密函数,只需要做相应调用即可。3.3.2发送p控制函数,删除电话到此,非对称加密邮件系统的加密与解密代码已经完成。上面是私钥拥有人发送邮件时候的流程;如果非私钥持有人向私钥持有人发送邮件,则把函数中密钥调换即可。公钥加密、私钥解密,这样有个好处:保证一定是私钥持有人接受并看到了邮件内容。邮件的发送与接受实现:发送文件的函数我们可以用连接到SMTP的方法,把实现封装到类SMTP中,VC中采用响应对话框的发送方式来发送:CmailDlg::OnSend()。接受邮件可使用封装在类CPOP3中的方法来实现,以响应对话框的方式:CmailDlg::OnRetr()。删除邮件等操作也需存在。具体流程图如图4所示。4rsa算法加密加密RSA算法本身是非对称的,它要求用户在加密和解密的时候输入不同的密钥,这可能使一些普通的用户在使用时感到不方便:他希望输入一个作为密码的字符串,解密时用同样的字符串解密。这实际上是对称加密体制。RSA算法同样也可以达到这个要求——只要求用户输入一个字符串作为密码就行了,使用户感觉不到实际使用的是对称加密体制。内部的转化和相关处理实现对用户不透明!我们可建立一个专门的类来解决这一矛盾,实现与数字加解密类的顺利对接,以用户的密钥字符串产生一个单射关系的数字加解密对象——同样的字符串一定产生同样的数字p,q,e。解密的时候也只需要输入同样的字符串就一定能解密成功!看上去就象对称加密体制一样。设计方案:设立一个有1000个素数元素的数组,把用户字符串的各个字符转化为数字相加,模1000,作为映射的数组元素的下标,为使产生不同的p,q,e,可对它们进行一个简单的、固定关系的运算,映射到不同的下标。再利用下标对应的数字来生成数字加解密类的对象。设这样的一个类为:Cpruduce。代码类设计:类中的映射关系,以intget_p()为例:它把字符串各字符转为整数后相加,模1000,得到映射到素数数组的下标(为保证得到不同的p,q,e,可简单运算映射到不同的下标)。函数值就是返回数组中这个下标对应的数组元素,以该素数作为得到的p值。这是除了数字签名以外,RSA算法作为一个加密算法的一般应用。对于*.txt类型等比较小的文件,用它来加密时间上还是可以的。它实现了一次一密的功能,并且,它可以实现对用户透明:用户只需要象常见的登录电脑一样输入一个作为密码的字符串,就可以把这字符串转为素数来进行运算,实现加密和解密。这里的加密和解密代码就是上面的签名和验证代码,只需要更改一下函数名称和接口参数就行了:voidCCrypt::OnEncryptFile(CStringfile,CStringkey)//加密的文件及密钥voidCCrypt::OnDecryptFile(CStringfile,CStringkey)//解密的文件及密钥5加密及解密算法的一般可改在上面的加/解密系统实现后,我们可以把它做成一个在加密电子邮件系统中的dll:在加密电子邮件中直接调用来进行加密或解密,与用AES来实现一样。更改算法的时候,可以直接换成另外算法的dll而无需更改邮件收发的代码。假设生成的dll名称为xyz.dll,发送邮件中调用代码为:6已经被泄漏的问题实现了一种非对称加密算法在两种场合的应用问题。本文中的非对称加解密系统成功的实现了按用户要求的非对称、一次一密的加解密处理。它的实现,解决了目前邮件收发中邮件可能已经被泄露的问题——无私钥,敌对方不可能看到邮件

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论