1.致谢
非常感谢Go语言中文网这个开源社区所提供的有关Go语言各种接口的文档说明:https://studygolang.com/pkgdoc。
2.对称加密算法在go语言中的实现分析
2.1 算法选择
这里仅针对DES和AES加密算法来做了测试,因为3DES的结构逻辑和DES几乎完全相同
2.2 分组模式
这里选择了CBC和CTR两种安全性比较高的分组模式,而没有选择ECB、CFB和OFB。当然ECB和CBC结构类似,而CFB和OFB与CTR类似,所以经验可以完全照搬即可。
2.3 go语言中对称加密算法的【固有模式】
由于go语言对与对称加密算法的包提供的“太过于详细”,所以在go语言中进行对称加密算法几本可以按照几个固有的模式来进行就OK
//一、加密过程
//--------------------------------------------------------------------------------
//(1)选择一种算法,创建一个底层使用的des/3des/aes的密码接口
//a.创建并返回一个使用DES算法的cipher.Block接口。key参数指的是密钥,长度是8bit。返回的是一个cipher.Block
func NewCipher(key []byte) (cipher.Block, error)
//b.创建并返回一个使用TDEA算法的cipher.Block接口。
func NewTripleDESCipher(key []byte) (cipher.Block, error)
//c.创建一个cipher.Block接口。参数key为密钥,长度只能是16、24、32字节,用以选择AES-128、AES-192、AES-256。
func NewCipher(key []byte) (cipher.Block, error)
//返回值Block接口代表一个使用特定密钥的底层块加/解密器。它提供了加密和解密独立数据块的能力。
/*
type Block interface {
// 返回加密字节块的大小
BlockSize() int
// 加密src的第一块数据并写入dst,src和dst可指向同一内存地址
Encrypt(dst, src []byte)
// 解密src的第一块数据并写入dst,src和dst可指向同一内存地址
Decrypt(dst, sr