目录
- 对称加密
- 非对称加密
- 哈希算法
对称加密

特点:
- 加密过程每一步可逆
- 加密/解密用同一组密钥
- 异或是最简单的对称加密算法
异或运算:按位异或运算符 ^ 是双目运算符。其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为 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 大字段的快速对比
数字签名
