zoukankan      html  css  js  c++  java
  • 信息的加密与解密

    信息的加密与解密

    • 信息的加密现有两种
      1. 对称加密:使用同一个密钥对信息进行加密和解密称为对称加密。
        • 使用场景:A与B共同约定并存储一个密钥。
          • A -> B: A 使用密钥对数据进行加密后得到加密的信息发送给 B,B 使用该密钥对加密的信息进行解密,得到原始信息。
          • B -> A: B 使用密钥对数据进行加密后得到加密的数据发送给 A,A 使用该密钥对加密的数据进行解密,得到原始数据。
        • 优点:加密解密速度快。
        • 缺点:
          1. 相对不安全,由于 AB 双方使用的是同一个密钥进行加密解密,任何一方的密钥泄漏,整个加密解密过程就暴露了。
          2. 在与多方进行通信的时候必须使用不同的密钥,多个密钥造成密钥管理困难。如果 A 与 B 通信时和 A 与 C 通信时使用的是同一个密钥,那么如果 C 获取到了 A 与 B 通信时加密的信息就可以使用密钥进行解密,造成 A 与 B 之间信息的泄露。
      2. 非对称加密:加密和解密使用不同的密钥。如果加密使用的是公钥,那么就必须要私钥来解密。如果加密使用的是私钥,必须要公钥进行解密。在此需要先了解公钥、私钥这两个概念。
        • 公钥:供给别人使用的密钥,使用公钥对信息加密的过程称之为加密,主要目的为防止信息传输过程中的泄漏。因为用于解密的私钥只有自己拥有。
        • 私钥:供给自己使用的密钥,使用私钥对信息加密的过程称之为签名,主要目的是为了确保信息是由自己发出的。因为接收方只有拿着自己提供的公钥才能解开自己使用私钥加密的信息。
        • 使用场景:B 生成一套公钥和私钥,并将公钥发送给 A。
          • A -> B: A 使用 B 提供的公钥对信息进行加密发送给 B, B 使用自己的私钥进行解密获取原始信息内容。在这个过程中,虽然确保了信息的不被其他人获取解密,因为私钥只有 B 拥有,但是其他人也可以利用这个公钥发送信息给 B。
          • B -> A: B 使用自己的私钥对信息进行加密发送给 A, A 使用 B 提供的公钥进行解密获取原始信息内容。在这个过程中,虽然确保了信息的发送人是 B,但是不能确保这个信息只有 A一个人知道,因为其他人也可以利用这个公钥来解密 B 发送给 A 的信息。
        • 优点:相对安全,确保了 A 传递给 B 信息不会被其他人解密以及 传递给 A 消息的是 B 本人。
        • 缺点:
          1. 发送给 A 的信息可以被其他人获取到。
          2. B 不能确定发送消息的人一定是 A。
          3. 效率较为低下,加密解密的过程相对于对称加密较为缓慢。
      3. 上述非对称的前面两个缺点其实可以通过二次加密来解决,但是会增大时间开销,以下为具体过程:
        • 使用场景: A生成一套公钥和私钥,并将公钥发送给 B,B也生成一套公钥和私钥,将公钥发送给 A,这样,A 持有 A 的私钥和 B 的公钥,B 持有 A 的公钥 和 B 的私钥。
          • A -> B: A 先使用 B 的公钥对信息进行加密,确保了消息不会被其他人获取,再将加密后的信息再次使用 A 自己的私钥进行加密,确保了发送方就是 A 本人。B 收到加密后的消息后,先使用 A 提供的公钥进行解密,得到使用 B 公钥加密后的信息, 再使用 B 自己的私钥进行二次解密,最终获得原始信息。
          • B -> A: B 先使用 A 的公钥对信息进行加密,确保了消息不会被其他人获取,再将加密后的信息再次使用 B 自己的私钥进行加密,确保了发送方就是 B 本人。A 收到加密的消息后,先使用 B 提供的公钥进行解密,得到使用 A 公钥加密后的信息,再使用 A 自己的私钥进行二次解密,最终获得原始信息。
        • 总结:通过以上步骤就确保了在 A 与 B 信息交流的过程中信息不被其他人获取以及彼此的身份不被冒名顶替的情况。
      4. 在实际使用非对称加密的过程中,信息量往往比较庞大,直接使用非对称加密会耗费很大的时间成本。因此通常会采取使用 MD5 / SHA-1 等数字签名的方式来验证信息的有效性而不对原始信息进行加密,数字签名的目的只是为了防止明文数据被篡改。而用于校验明文数据的数字签名则被公钥加密后一起随明文数据发送给对方。如果不希望发送的明文信息被其他人看到,你甚至可以将明文信息使用对称加密算法进行加密,然后将密钥使用对方提供的公钥加密后与被公钥加密的数字签名带上被对称加密的信息发送出去。
  • 相关阅读:
    从底层谈WebGIS 原理设计与实现(六):WebGIS中地图瓦片在Canvas上的拼接显示原理
    从底层谈WebGIS 原理设计与实现(五):WebGIS中通过行列号来换算出多种瓦片的URL 之在线地图
    从底层谈WebGIS 原理设计与实现(四):WebGIS中通过行列号来换算出多种瓦片的URL 之离线地图
    从底层谈WebGIS 原理设计与实现(三):WebGIS前端地图显示之根据地理范围换算出瓦片行列号的原理(核心)
    从底层谈WebGIS 原理设计与实现(二):探究本质,WebGIS前端地图显示之地图比例尺换算原理
    [leetcode]Rotate List
    [leetcode]Remove Element
    [leetcode]Binary Tree Level Order Traversal II
    [leetcode]Populating Next Right Pointers in Each Node II
    [leetcode]Construct Binary Tree from Inorder and Postorder Traversal
  • 原文地址:https://www.cnblogs.com/soundofcolors/p/11520958.html
Copyright © 2011-2022 走看看