zoukankan      html  css  js  c++  java
  • 关于对称加密和非对称加密以及签名,认证和证书的理解

    原文:https://blog.csdn.net/zjf535214685/article/details/79908773

    1.对称加密算法

            对称加密算法的加密和解密使用的密匙是相同的,也就是说如果通讯两方如果使用对称加密算法来加密通讯数据,那么通讯双方就需要都知道这个密匙,收到通讯数据后用这个密匙来解密数据。

    2.非对称算法

            非对称算法中用到的密匙有两个,分别是公匙和私匙,要求通讯双方都有自己的公匙和私匙,自己公匙加密的数据只有自己的私匙才能解开,自己私匙加密的数据也只有自己的公匙才能解开。公匙是可以公布在网络上的,相当于一个公共的电话簿,可以被其他人获取到的。

            以一个通信的例子来说明非对称算法:

            A 要和 B 进行通信,A在网络上获取到B的公匙,然后把数据用B的公匙进行加密发送给B,B收到了数据后就用自己的私匙进行解密数据,然后就可以看到数据内容了,即使在网络传输中加密数据被黑客截取,由于黑客没有对应的私匙,他也无法解密数据进行查看。

            在通信中对称加密算法比较高效,但是需要告知对方加密钥匙,在实际运用时比较麻烦,所以一般都是用非对称加密算法来加密对称加密算法的钥匙,然后发送给对方,对方收到对称加密算法的钥匙后,后续通信就用对称加密算法来加密消息内容了

      

    3.签名和认证

            在两个人进行通信,B如何确保收到的A的数据就一定是A自己发出来的而不是黑客伪装成A发送的数据,以及怎么确定数据是否被黑客篡改,这里就用到签名和认证来确认发件人和数据是否被篡改。

            A准备给B发送一段信息,A先将消息进行散列运算,得到消息摘要(md5),然后用自己的私匙对摘要进行加密,然后再用B的公钥对消息内容和已经加密过的摘要进行加密,这样当B收到这条消息时,先用自己的私匙来解密,得到消息内容和加密的信息摘要,再用A的公匙来解密这段加密摘要(能正确解密就说明这段消息是A发送的,因为只有A的公匙才能解开A的私匙),解密摘要后得到信息内容的摘要A,然后在用同样的散列算法来对已经解密好的信息内容进行运算,得到一个信息摘要B,再把A和B进行对比,一致则说明数据没有被篡改过。(信息摘要是根据对消息内容进行散列运算得到一个唯一的标识码,除非数据相同,否则几乎不可能由其他数据运算得到此标识码,所以它是唯一的,只要信息内容有一点改变,再次进行散列运算时得到标识码就会改变,所以可以对解密后的信息进行散列运算得到摘要然后和发送过来的信息摘要进行对比判断数据是否被修改)

    4.证书

        与数字签名相关的一个概念就是证书机制了,证书是用来做什么呢?在上面的各种模式中,我们一直使用了这样一个假设,就是接收方或者发送方所持有的、对方的公钥总是正确的(确实是对方公布的)。而实际上除非对方手把手将公钥交给我们,否则如果不采取措施,双方在网络中传递公钥时,一样有可能被篡改。那么怎样解决这个问题呢?这时就需要证书机制了:可以引入一个公正的第三方,当某一方想要发布公钥时,它将自身的身份信息及公钥提交给这个第三方,第三方对其身份进行证实,如果没有问题,则将其信息和公钥打包成为证书(Certificate)。而这个公正的第三方,就是常说的证书颁发机构(Certificate Authority)。当我们需要获取公钥时,只需要获得其证书,然后从中提取出公钥就可以了。

  • 相关阅读:
    JavaScript实现类的private、protected、public、static以及继承
    OSS网页上传和断点续传(STSToken篇)
    OSS网页上传和断点续传(OSS配置篇)
    Linq sum()时遇到NULL
    SQLSERVER事务日志已满 the transaction log for database 'xx' is full
    笔记本高分辨软件兼容问题,字体太小或模糊
    H5上传图片之canvas
    An error occurred while updating the entries. See the inner exception for details.
    无限级结构SQL查询所有的下级和所有的上级
    SQLserver 进程被死锁问题解决
  • 原文地址:https://www.cnblogs.com/glory0727/p/9935279.html
Copyright © 2011-2022 走看看