常见加密方式

常见的机密方式

  • 对称加密
    • 密钥比较短
    • 密钥只有一个,加密解密使用的密钥相同
    • 加密的效率高
    • 加密强度相对较低(相对于非对称加密)
    • 密钥分发困难 -> 因为密钥要保密不能泄露,在网络环境中很容易就泄露出去了

AES
最安全,效率最高的公开的对称加密算法
密钥长度:16字节,24字节,32字节 是可选的,长度越长越安全,但是效率越低
分组加密,每组长度16字节
密文和明文的长度相同 == 16字节

DES/3DES
DES 密钥长度 8byte,
不安全,已经被破解
对数据分段加密,每组8字节
得到的密文和明文的长度相同
3DES 密钥长度 24byte,
安全的,效率比较低

  • 非对称加密
    • 密钥比较长
    • 密钥有两个,所有的非对称加密算法都有生成密钥对的函数
      • 这两个密钥对保存到不同的文件中,一个文件是公钥(比较小),一个是私钥(比较大)
      • 公钥可以公开
      • 私钥不能公开
    • 加解密使用的密钥不同
      • 如果使用公钥加密,必须私钥解密
      • 如果使用私钥加密, 必须公钥解密
    • 加密效率低
    • 加密强度高
    • 可以直接可以进行分发 ->分发公钥

RSA(数字签名和密钥交换)
ECC(椭圆曲线加密算法)

密钥交换的过程

  • 为什么要交换

    • 非对称加密密钥分发方便,但是效率低 -> 改进:需要使用对称加密
    • 使用对称加密 -> 密钥分发困难 -> 改进: 使用非对称加密进行密钥分发
      • 分发对称加密的密钥,本质就是一个字符串
  • 密钥交换过程

    • 在服务端生成一个非对称加密的密钥对: 公钥,私钥
    • 服务器将公钥发送给客户端
    • 在客户端生成一个随机字符串 -> 这就是对称加密需要的密钥
    • 在客户端使用,对称加密的密钥进行加密 -> 密文
    • 将加密的密文发送给服务器
    • 服务端使用私钥解密 -> 对称加密的密钥
    • 双方使用同一个密钥进行对称加密通信
    • 双发使用同一密钥进行对称加密通信

Hash算法(单向散列函数)

  • 特点
    • 不管原始数据有多长,通过哈希算法进行计算,得到的结果的长度是固定的
      • 是一个二进制的字符串
    • 只要是原始数据不以样,得到的结果就不一样
    • MD4/MD5
      • 散列值长度: 16字节
    • SHA-1
      • 散列值长度: 20字节
    • SHA-2
    • SHA3-224/SHA3-256/SHA3-384/SHA3-512
    • 有很强的抗碰撞性
      • 碰撞: 原始数据不同,但是通过同样的哈希算法进行计算能得到相同的结果
      • 推导的结论
        • 数据不同得到的结果就不同
      • 应用场景:
        • 数据效验
        • 登陆验证
        • 秒传
    • 不可逆
      • 得到的结果不能推导初原始数据

哈希运算的结果:

  • 散列值
  • 指纹
  • 摘要

数字签名

  • 作用:
    • 效验数据有没有被篡改(完整性)
    • 鉴别数据的所有者
    • 不能对数据加密
  • 数字签名的过程: -> 私钥加密数据
    • 生成一个非对称加密的密钥对,分发公钥
    • 使用哈希函数对原始数据进行哈希运算 -> 散列值
    • 使用私钥对数据加密 -> 密文
    • 将原始数据和密文一起发送给接收者
  • 效验签名的过程:
    • 接收签名的一方分发的公钥
    • 接收签名者发送的数据: 原始数据 + 签名
    • 对数据进行判断:
      • 接收的原始数据 -> 散列值new
        • 和签名的时候使用的哈希函数相同(必须相同)
    • 使用公钥对签名(密文)解密-> 得到了散列值old
    • 比较两个散列值
      • 相同: 数据的所有者确实是A,并且数据没有被篡改
      • 不同:数据的所有者不是A,或者数据被篡改了

posted on 2021-06-05 00:09  lodger47  阅读(471)  评论(0)    收藏  举报

导航