关于加密

来源:互联网 发布:2016最新癌症数据统计 编辑:程序博客网 时间:2024/06/05 16:00
秘钥:非对称秘钥:发送方和接受方使用的是不同的密码
      对称密钥:发送方和接收方使用的是相同的密码,秘钥管理困难


注重讲解非对称秘钥:
   A在加密的时候生成私钥和公钥,A保留私钥,公布公钥。当B向A发送消息的时候,会用   A的公钥对消息进行加密,A收到信息后用私钥进行解密。


如果A要给B发送消息呢???--涉及到数字证书的问题


什么是数字证书?
   A给B发送消息的时候用MD5算法对报文产生一个摘要,再用自己的私钥对这一摘要进行 加密形成数字证书,将数字证书和报文一起发送给B,然后B用A的公钥把数字证书进行解密,得到一个摘要,然后用MD5算法对报文产生另一个摘要,当两个摘要相等,就证明消息是A发送的,并且没有被改动过!数字证书是发送者身份的一种证明,用于确保数据的真实性和完整性!


介绍一种算法:
  影响力最大的一种算法:
  RSA算法:1.RSA分别对应三为提出者的姓氏开头
           2.是一种公钥加密算法,即非对称加密算法
           3.理论事实:将两个大素数的成绩作为公钥。原因是对于大素数的成绩进行因            式分解十分困难


截止至2013年发现的最大素数:(2^57885161)-1(17425170位)


RSA算法涉及的三个参数:n, e1, e2
  n为大质数p,q的乘积,其二进制表示的长度即为秘钥的长度
  e1任取,但满足:e1与(p-1)*(q-1)互质(公因数为1)
  e2满足:(e2*e1)mod((p-1)*(q-1))=1   (mod为除法取余)
  然后(n,e1) 和(n,e2)就是密钥对,前者为公钥,后者为私钥
  设A为明文,B为密文:
     则: A=B^e2 mod n;(解密)

          B=A^e1 mod n;(加密)

实例:

下面用两个小素数717来建立一个简单的RSA算法:

(1)选择两个素数p=7q=17

(2)计算n=pq=7 *17=119,计算Φ(n)=(p-1)(q-1)=6 *16=96

(3)选择一个随机整数e=5,它小于Φ(n)96并且于96互素;

(4)求出d,使得de=1mod96d<96,此处求出d=77,因为

   77   53854  961

(5)输入明文M19,计算191195次幂,Me19566mod119,传出密文C66

(6)接收密文66,计算6611977次幂;Cd=6677≡19mod119得到明文19。  

例子中将(119,5)作为公钥,(119,77)作为私钥,当p.q足够大的时候,对于n的分解会异常困难,难于破解也在于此!!


MD5:Message Digest Algorithm 5消息摘要算法
    MD5将整个文件当作一个大文本信息,通过其不可逆的字符串变换算法,产生了这个唯   一的MD5信息摘要,就是一定长的十六进制数字串。
    应用:数字签名,防止消息被篡改
          各种操作系统的登陆认证。对用户的密码进行加密后存储到数据库。
    MD5算法具有以下特点:
1、压缩性:任意长度的数据,算出的MD5值长度都是固定的(长度为32)。
2、容易计算:从原数据计算出MD5值很容易。
3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
4、强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。

0 0
原创粉丝点击