golang aes-256-cbc 加解密

//aes解密,cbc模式,PKCS5Padding补码
func AesDecrypt(message string) (result string, err error) {
	result = ""
	defer func() {
		// 捕捉错误
		if r := recover(); r != nil {
			err = fmt.Errorf("error: %v", r)
		}
	}()

	// 使用base64解码我们提供的数据
	data, _ := base64.StdEncoding.DecodeString(message)
	key, _ := hex.DecodeString("96B6715EF50FA4557F6CF977178E86C9")
	iv, _ := hex.DecodeString("11C500740BE44D4EE5BDAED03CE76FFF")

	block, err := aes.NewCipher(key)
	if err != nil {
		return result, err
	}

	mode := cipher.NewCBCDecrypter(block, iv)
	padded := make([]byte, len(data))
	mode.CryptBlocks(padded, data)

	length := len(padded)
	unpadding := int(padded[length-1])
	if length-unpadding < 0 {
		return result, err
	}
	result = gconv.String(padded[:length-unpadding])
	return result, nil
}


//aes加密,cbc模式,PKCS5Padding补码
func AesEncrypt(message string) (result string, err error) {
	result = ""
	defer func() {
		// 捕捉错误
		if r := recover(); r != nil {
			err = fmt.Errorf("error: %v", r)
		}
	}()

	key, _ := hex.DecodeString("96B6715EF50FA4557F6CF977178E86C9")
	iv, _ := hex.DecodeString("11C500740BE44D4EE5BDAED03CE76FFF")

	encodeBytes := []byte(message)
	//根据key 生成密文
	block, err := aes.NewCipher(key)
	if err != nil {
		return result,err
	}

	//填充
	blockSize := block.BlockSize()
	encodeBytes = PKCS5Padding(encodeBytes, blockSize)

	//加密
	blockMode := cipher.NewCBCEncrypter(block, iv)
	crypted := make([]byte, len(encodeBytes))
	blockMode.CryptBlocks(crypted, encodeBytes)

	//转为base64
	result = base64.StdEncoding.EncodeToString(crypted)+"#kdsjafjalsdjg#170"
	return result, nil
}
func PKCS5Padding(ciphertext []byte, blockSize int) []byte {
	//填充
	padding := blockSize - len(ciphertext)%blockSize
	padtext := bytes.Repeat([]byte{byte(padding)}, padding)
	return append(ciphertext, padtext...)
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值