CBC - 密码块链模式 --最常用
- 特点:密文没有规律
- 需要一个初始化向量,是一个数组,该长度与明文分组长度相等。
- 加密解密所使用的初始化向量值必须相同。
CFB密码反馈模式
- 特点:密文没有规律
- 需要一个初始化向量,是一个数组,该长度与明文分组长度相等。
- 不需要填充
OFB 输出反馈模式
- 不需要填充
- 需要一个初始化向量,是一个数组,该长度与明文分组长度相等。
CTR模式 -常用
- 密文没有规律
- 不需要初始化向量,不需要填充
加密流程
- 创建一个底层使用的 des/3des/aes的密码接口
- 如果使用cbc/ecb分组模式需要对明文分组进行填充
- 创建一个密码分组模式的接口对象
- cbc
- cfb
- ofb
- ctr
- 加密得到密文
对称加密中公开的加密算法
des
-
分组长度:8字节
-
秘钥长度: 8字节
-
3des
-
分组长度:8字节
-
秘钥长度: 24字节
-
aes
-
分组长度:16字节
-
秘钥长度: 16字节、24字节、32字节(在go的api中只能使用16字节)
非对称加密
RSA
code
package main
import (
"crypto/rand"
"crypto/rsa"
"crypto/x509"
"encoding/pem"
"fmt"
"os"
)
func generateRSAKey(pripath, pubpath, passwd string)