zoukankan      html  css  js  c++  java
  • 【转载】浅谈对称加密和非对称加密

    本文转载于https://zhuanlan.zhihu.com/p/49494990

    在数字加密算法中,通过可划分为对称加密和非对称加密。

    一:什么是对称加密?

    在对称加密算法中,加密和解密使用的是同一把钥匙,即:使用相同的密匙对同一密码进行加密和解密;

    加密过程如下:

    加密:原文 + 密匙 = 密文

    解密:密文 - 密匙 = 原文

     

    对称加密图解

    例如:小明给小红发送微信消息表白,为了避免小红手机临时不在身边而导致消息被其他热看到,远原本小明计划发送”我爱你一生一世”,小明和小红使用一种约定好的暗语”5201314”来替代。当小红收到消息时,则自然明白文字的含义。

    这个比喻,感觉是不是有点不太形象哈!

     

    二:什么是非对称加密?

    明白了对称加密后,我们来了解一下什么是非对称加密。我们知道,对称加密是使用的

    同一把密匙进行加密和解密。那么,非对称加密自然是使用不同的密钥进行加密和解密啦。

    非对称加密有两个钥匙,及公钥(Public Key)和私钥(Private Key)。公钥和私钥是成对的存在,如果对原文使用公钥加密,则只能使用对应的私钥才能解密;因为加密和解密使用的不是同一把密钥,所以这种算法称之为非对称加密算法。

    非对称加密算法的密匙是通过一系列算法获取到的一长串随机数,通常随机数的长度越长,加密信息越安全。通过私钥经过一系列算法是可以推导出公钥的,也就是说,公钥是基于私钥而存在的。但是无法通过公钥反向推倒出私钥,这个过程的单向的。

    下面,让我们看一下非对称加密及解密过程。

    非对称加密图解

    根据上图,我们可以看到,对于原文,通过接收方的公钥进行加密,发送给接收方,接收方拿到密文后,通过自己的私钥可以解密,获取原文信息。在这个过程中,及时接收方公钥泄漏,也不会导致消息泄漏,因为密文只能通过接收方的私钥才能打开。所以,信息安全过程中,接收方只需要保管好自己的私钥不泄露即可。

    同样,当接收方向发送方发送消息时,接收方将密文通过原发送方的公钥进行加密,原发送方通过自己的私钥才可解密。

    到了这里,是不是感觉思维清晰了很多。了解了对称加密和非对称加密,那么,先来聊聊它们各自的优缺点吧。

    对称加密:

    优点:算法简单,加密解密容易,效率高,执行快。

    缺点:相对来说不算特别安全,只有一把钥匙,密文如果被拦截,且密钥也被劫持,那么,信息很容易被破译。

    非对称加密:

    优点:安全,即使密文被拦截、公钥被获取,但是无法获取到私钥,也就无法破译密文。作为接收方,务必要保管好自己的密钥。

    缺点:加密算法及其复杂,安全性依赖算法与密钥,而且加密和解密效率很低。

     

    三:什么是数字证书?

    数字证书有点类似于我们的居民身份证,只是数字证书是基于互联网通信的,用于标记通信双方身份的一种方式。数字证书是由权威机构Certificate Authority发行的,又称之为证书授权,简称为:CA。人们在网上可以根据它来识别对方身份信息。

    数字证书绑定了公钥及其持有者的真实身份,它类似于现实生活中的居民身份证,所不同的是数字证书不再是纸质的证照,而是一段含有证书持有者身份信息并经过认证中心审核签发的电子数据,广泛用在电子商务和移动互联网中。

     

    四:什么是数字签名?

    数字签名是指将摘要信息使用接收者的公钥进行加密,与密文一起发送给接收者。接收者使用自己的私钥对摘要信息进行解密,然后使用Hash函数对收到的密文产生一个摘要信息,然后将摘要信息与发送着传输过来解密后的摘要信息对比是否一致。如果一致,则表明数据信息没有被篡改。

    也就是说,数字签名能够验证收到的信息的完整性,避免中途信息被劫持篡改或丢失。对方可以根据数字签名来判断获取到的数据信息时候是最原始的数据。

    如果不好理解,这里再给举个例子。

    例如,发送一段文字”abcd”,通过Hash算法(方便测试,拟比HashCode)得到hashCode值2987074,然后将2987074再次使用对方的公钥进行加密,然后将文字”abcd”使用对方的公钥进行加密得到密文,一起发送给接收者。接收者再获取到信息后,先通过自己的私钥将摘要信息解密,然后将密文解密,并且通过相同的hash算法计算出密文的hashcode值,对比两个hashcode值是否一致。

    非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将其中的一把作为公用密钥向其它方公开;得到该公用密钥的乙方使用该密钥对机密信息进行加密后再发送给甲方;甲方再用自己保存的另一把专用密钥对加密后的信息进行解密。

  • 相关阅读:
    C#-获取页面源代码
    C#-获取页面源代码
    C#-窗体移动
    C#-窗体移动
    C#-窗体鼠标穿透
    C#-窗体鼠标穿透
    C#-string生成图片
    C#-string生成图片
    C#-Stmp发邮件
    POJ-1611 The Suspects
  • 原文地址:https://www.cnblogs.com/gaoshaonian/p/13226113.html
Copyright © 2011-2022 走看看