golang官方不支持ecb模式,因业务需要自编一段ecb
package myAes
import (
"bytes"
"crypto/aes"
"crypto/md5"
"encoding/hex"
"fmt"
"strings"
)
func padding(ciphertext []byte, blockSize int) []byte {
padding := blockSize - len(ciphertext)%blockSize
padtext := bytes.Repeat([]byte{byte(padding)}, padding)
return append(ciphertext, padtext...)
}
func secretKeySpec(skey []byte) (key string) {
//key转换
has := md5.Sum(skey)
sky := fmt.Sprintf("%X", has)
return strings.ToUpper(sky)
}
func AesEncrypt(origData []byte, skey []byte) (string, error) {
// aes 加密
skeySpec := secretKeySpec(skey)
/**AES 加密**/
//key只能是 16 24 32长度
block, err := aes.NewCipher([]byte(skeySpec))
if err != nil {
return "", err
}
//padding
origData = padding(origData, block.BlockSize())
//存储每次加密的数据
//分组分块加密
buffer := bytes.NewBufferString("")
tmpData := make([]