1 对称加密
- DES – Data Encryption Standard
- 现在使用DES方式加密,数据还安全吗?
- 是不是分组密码?
- DES的分组长度?
- DES的密钥长度
- 56bit密钥长度 + 8bit错误检测标志位 == 64bit == 8byte
- 3DES – Triple-DES
- 3DES安全吗?
- 算法描述
- 是不是分组密码?
- 3DES分组长度?
- 3DES密钥长度?
- 3DES加密过程?
- 3DES解密过程?
- AES – Advanced Encryption Standard
- AES安全吗?
- 是不是分组密码?
- AES分组长度?
- AES密钥长度?
- 128bit = 16byte
- 192bit = 24byte
- 256bit = 32byte
- 字节填充
- ANSI X.923
- … | DD DD DD DD DD DD DD DD | DD DD DD DD (00 00 00 04)|
- 除了最后字节,其他填0
- ISO 10126
- … | DD DD DD DD DD DD DD DD | DD DD DD DD (81 A6 23 04)|
- 除了最后字节,其他随机
- PKCS7(Rfc3852)
- … | DD DD DD DD DD DD DD DD | DD DD DD DD (04 04 04 04)|
- 都是填充相同的值,值为填充的长度
- Zero Padding
- … | DD DD DD DD DD DD DD DD | DD DD DD DD (00 00 00 00)|
- 都是填充0
- 分组模式
- ECB - Electronic CodeBook 电子密码本模式
- CBC - Cipher Block Chaining 密码块链模式
- CFB - Cipher FeedBack 密文反馈模式
- OFB - Output FeedBack 输出反馈模式
- CTR - CounTeR 计数器模式
- 初始化向量 - IV
- 对称加密在go中实现
"crypto/des"
func NewCipher(key []byte) (cipher.Block, error)
func NewTripleDESCipher(key []byte) (cipher.Block, error)
"crypto/aes"
func NewCipher(key []byte) (cipher.Block, error)
- cbc
func NewCBCEncrypter(b Block, iv []byte) BlockMode
- cfb
func NewCFBEncrypter(b Block, iv []byte) Stream
- ofb
- ctr