3DES加解密,本文选择了CBC加解密模式。
import (
"crypto/des"
"bytes"
"crypto/cipher"
)
//3DES——CBC模式,key长度必须为24,加密解密key和向量需要互相匹配
func TripleDesEncrypt(origData,key,iv []byte) ([]byte, error) {
//iv即是向量,长度为8
block, err := des.NewTripleDESCipher(key)
if err != nil {
return nil, err
}
origData = PKCS5Padding(origData, block.BlockSize())
blockMode := cipher.NewCBCEncrypter(block, iv)
crypted := make([]byte, len(origData))
blockMode.CryptBlocks(crypted, origData)
return crypted, nil
}
// 3DES解密
func TripleDesDecrypt(crypted, key,iv []byte) ([]byte, error) {
block, err := des.NewTripleDESCipher(key)
if err != nil {
return nil, err
}
blockMode := ci