目录

  • 对称加密
  • 非对称加密
  • 哈希算法

对称加密

特点:

  • 加密过程每一步可逆
  • 加密/解密用同一组密钥
  • 异或是最简单的对称加密算法

异或运算:按位异或运算符 ^ 是双目运算符。其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为 1。

如:

var a, key = 2, 1
var b = a ^ key
fmt.Printf("a: %b, key: %b, b: %b\n", a, key, b)
// a: 10, key: 01, b: 11

DES 数据加密标准

DES(Data Encryption Standard)数据加密标准,是目前最为流行的加密算法之一,密钥是 64 位。

  • 对原始数据(明文)进行分组,每组 64 位,最后一组不足 64 位时,按一定规则补充
  • 对每组进行 DES 运算

AES 加密方式

AES(Advanced Encryption Standard)高级加密标准,旨在取代 DES。

非对称加密

特点:

  • 使用公钥加密,使用私钥解密
  • 公钥和私钥不同
  • 公钥可以公布给所有人
  • 私钥只有自己保存
  • 相比于对称加密,运算速度非常

RSA 加密方式

RSA 三个字母取自三个创始人名字。

  • 密钥越长,越难破解
  • RSA 算法原理来自数论

对称和非对称结合使用

实际应用中,通常结合对称加密和非对称加密的优点:

  • 使用非对称加密传输对称加密的密钥
  • 使用对称加密加密大量数据

哈希算法

基本特征:

  • 输入可以是任意长度
  • 输出是固定长度
  • 根据输入很容易计算出输出
  • 根据输出很难计算出输入(几乎不可能)
  • 两个不同的输入几乎不可能得到相同的输出

SHA

SHA(Secure Hash Algorithm)安全散列算法,是一系列密码散列函数,有多个不同安全等级的版本。

  • 防伪装,防篡改,保证信息的合法性和完整性

MD5

MD5(Message-Digest Algorithm 5)信息摘要算法 5(第 5 版),算法流程和 SHA1 差不多。

MD5 的输出是128 位

哈希函数应用

  • 用户密码的存储
  • 文件上传/下载的完整性校验
  • MySQL 大字段的快速对比

数字签名