golang aes加密ecb模式

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([]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值