常见加密算法

发布时间: 更新时间: 总字数:1636 阅读时间:4m 作者: 分享 复制网址

常见加密算法介绍

术语

  • 计算机中 密码 cipher 指一种用于加密或者解密的算法,密钥分为:
    • 对称密钥
    • 非对称密钥
  • 密钥(key) 是使用密码(cipher)算法过程中输入的参数
  • 加密是通过算法对数据进行编码的过程,加密的密文可以通过算法得到原始信息
    • 加密的目的保证数据的安全存储、传输等
  • 哈希(hash)是通过算法将任意大小的数据映射到固定长度的过程,得到的值称为哈希值哈希的目的是为了验证数据是否被篡改
  • 一般是随机值,作为哈希函数的一个入参,加盐可以使密码哈希出唯一值
  • 明文(plaintext) 是加密之前的原始数据,密文 是通过 密码(cipher) 运算后得到的,称为 密文(ciphertext)
明文(plaintext) -<密码/cipher>-> 密文(ciphertext)

对称加密

  • 对称密钥(Symmetric-key algorithm)又称为共享密钥加密
  • 加/解密使用相同的密钥,常见算法包括:
    • DES(Data Encryption Standard)
    • AES
    • IDEA
    • RC6
    • CAST5 实现方式:将原始数据分隔成固定大小的块,逐个进行加密
  • 特点:
    • 加解密使用同一个密钥
    • 效率高,适用于大量数据加密的场景
  • 缺点:
    • 算法公开,安全性取决于密钥大小,密钥越大,加解密效率越低
    • 无法确定加密者

非对称加密

  • 非对称密钥(public-key cryptography),又称为公开密钥加密,由一对密钥组成
  • 使用一对密钥来分别进行加密和解密
    • 公开密钥(public key,公钥)
    • 私有密钥(private key,私钥),必须保证私密性
  • 特点:
    • 公钥加密的数据,只有对应的私钥才能解密
    • 私钥加密的数据,只有对应的公钥才能解密
    • 加解密复杂,效率低,能耗高(缺点)
  • 算法:
    • RSA(加密、数字签名)
    • DSA(数字签名)
    • ECC
    • Elgamal
    • D-H
    • 背包算法
  • 使用场景
    • 数据加密
    • 数据签名:防止明文数据被篡改
      • 验证签发者,使用密钥对数据(原始数据经过 hash 算法的值)进行加密得到签名密文
      • 使用者通过公钥和密文得到hash值,通过验证上述 hash 值与数据实际计算的hash是否匹配判断数据是否被篡改
    • 对称密钥交换

单向散列

  • 将任意数字缩小成固定大小的 指纹,特点如下:
    • 任意长度输入、固定长度输出
    • 不可逆的:无法从指纹生成原始数据
    • 不同字符串生成的指纹不同
  • 算法
    • md5(128bits)
    • sha1(160bits)
    • sha224
    • sha256
    • sha364
    • sha512
  • 使用场景:保证数据的完整性

数字签名

数字签名(Digital Signature) 基于非对称加密算法,使用私钥对数据的摘要进行加密运算,生成签名。

数字签名就是用于验证传输的内容是不是真实服务器发送的数据,发送的数据有没有被篡改过,用私钥来加密,通过与之配对的公钥来解密。

  • 第一步:服务端把报文经过Hash处理后生成摘要信息Digest,摘要信息使用私钥private-key加密之后就生成签名,服务器把签名连同报文一起发送给客户端。

signature

图片转载自互联网

  • 第二步:客户端接收到数据后,把签名提取出来用public-key解密,如果能正常的解密出来Digest2,那么就能确认是对方发的。

  • 第三步:客户端把报文Text提取出来做同样的Hash处理,得到的摘要信息Digest1,再与之前解密出来的Digist2对比,如果两者相等,就表示内容没有被篡改,否则内容就是被人改过了。因为只要文本内容哪怕有任何一点点改动都会Hash出一个完全不一样的摘要信息出来。

signature

图片转载自互联网

数字证书

数字证书(Certificate Authority,CA) 是由权威机构颁发的、能够证明公钥持有者身份的电子文件,包含公钥信息和CA的数字签名,确保公钥是可信的。

目前数字证书的标准是 x.509,由两种格式:

  • PEM 可见字符
  • DER 二进制

如何保证现在使用的公钥就是真实服务器发给你的呢?我们就用数字证书来解决这个问题。数字证书一般由数字证书认证机构(Certificate Authority)颁发,证书里面包含了真实服务器的公钥和网站的一些其他信息,数字证书机构用自己的私钥加密后发给浏览器,浏览器使用数字证书机构的公钥解密后得到真实服务器的公钥。这个过程是建立在被大家所认可的证书机构之上得到的公钥,所以这是一种安全的方式。

Home Archives Categories Tags Statistics
本文总阅读量 次 本站总访问量 次 本站总访客数