zoukankan      html  css  js  c++  java
  • MD5、公钥、私钥、加密、认证

    MD5

    MD5的全称是Message-Digest Algorithm 5。

    MD5将任意长度的“字节串”变换成一个128bit的大整数,并且它是一个不可逆的字符串变换算法。

    换句话说就是,即使你看到源程序和算法描述,也无法将一个MD5的值变换回原始的字符串,

     

    MD5的典型应用

    1:对一段Message(字节串)产生fingerprint(指纹),以防止被“篡改”。

    举个例子,你将一段话写在一个叫 readme.txt文件中,并对这个readme.txt产生一个MD5的值并记录在案,然后你可以传播这个文件给别人,别人如果修改了文件中的任何内容,你对这个文件重新计算MD5时就会发现。如果再有一个第三方的认证机构,用MD5还可以防止文件作者的“抵赖”,这就是所谓的数字签名应用。

    2:MD5还广泛用于加密和解密技术上。

    在很多操作系统中,用户的密码是以MD5值(或类似的其它算法)的方式保存的, 用户Login的时候,系统是把用户输入的密码计算成MD5值,然后再去和系统中保存的MD5值进行比较,而系统并不“知道”用户的密码是什么。

     

    加密和认证

      首先我们需要区分加密和认证这两个基本概念。

      加密是将数据资料加密,使得非法用户即使取得加密过的资料,也无法获取正确的资料内容,所以数据加密可以保护数据,防止监听攻击。其重点在于数据的安全性。

            身份认证是用来判断某个身份的真实性,确认身份后,系统才可以依不同的身份给予不同的权限。其重点在于用户的真实性。

            两者的侧重点是不同的。

    公钥和私钥

      其次我们还要了解公钥和私钥的概念和作用。

      在现代密码体制中加密和解密是采用不同的密钥(公开密钥),也就是非对称密钥密码系统。

            每个通信方均需要两个密钥,即公钥和私钥,这两把密钥可以互为加解密。

            公钥是公开的,不需要保密,而私钥是由个人自己持有,并且必须妥善保管和注意保密。

      公钥私钥的原则:

    1. 一个公钥对应一个私钥。
    2. 密钥对中,让大家都知道的是公钥,不告诉大家,只有自己知道的,是私钥。
    3. 如果用其中一个密钥加密数据,则只有对应的那个密钥才可以解密。
    4. 如果用其中一个密钥可以进行解密数据,则该数据必然是对应的那个密钥进行的加密。

      非对称密钥密码的主要应用就是公钥加密和公钥认证,而公钥加密的过程和公钥认证的过程是不一样的,下面我就详细讲解一下两者的区别。

    基于公开密钥的加密过程

      比如有两个用户Alice和Bob,Alice想把一段明文通过双钥加密的技术发送给Bob,Bob有一对公钥和私钥,那么加密解密的过程如下:

    1. Bob将他的公开密钥传送给Alice。
    2. Alice用Bob的公开密钥加密她的消息,然后传送给Bob。
    3. Bob用他的私人密钥解密Alice的消息。

      上面的过程可以用下图表示,Alice使用Bob的公钥进行加密,Bob用自己的私钥进行解密。

     

    基于公开密钥的认证过程

      身份认证和加密就不同了,主要用户鉴别用户的真伪。这里我们只要能够鉴别一个用户的私钥是正确的,就可以鉴别这个用户的真伪。

      还是Alice和Bob这两个用户,Alice想让Bob知道自己是真实的Alice,而不是假冒的,因此Alice只要使用公钥密码学对文件签名发送给Bob,Bob使用Alice的公钥对文件进行解密,如果可以解密成功,则证明Alice的私钥是正确的,因而就完成了对Alice的身份鉴别。整个身份认证的过程如下:

    1. Alice用她的私人密钥对文件加密,从而对文件签名。
    2. Alice将签名的文件传送给Bob。
    3. Bob用Alice的公钥解密文件,从而验证签名。

      上面的过程可以用下图表示,Alice使用自己的私钥加密,Bob用Alice的公钥进行解密。

     

     

  • 相关阅读:
    构建之法阅读笔记01
    最长英语单词链
    第十五周学习总结
    寻找“水王”
    Happy Necklace HDU
    Bi-shoe and Phi-shoe LightOJ
    The Embarrassed Cryptographer POJ
    Big Number HDU
    矩阵乘法模板C/C++
    Baby Step,Giant Step算法模板
  • 原文地址:https://www.cnblogs.com/feiyu-mdm/p/5564574.html
Copyright © 2011-2022 走看看