关于golang AES-256-CBC的加密解密问题?

遇到一个老项目重构工作,客户端采用C# 对请求参数使用 AES256加密,模式是CBC,填充应该是C#AES加密的默认填充方式,而服务器现采用golang进行重构,遇到解密参数时,发现解密出来的明文只有正确明文的一半
正常解密出的数据: "FC5872C8A556912318C4AC35D035B322"
现在golang解密出来的数据 :"[{t��&�Rnёr�18C4AC35D035B322"

这很费解,去网上找了很多现成的解密代码,搬砖过去要么截出来全是乱码,要么就只有一半

下面是客户端的加密和服务端的解密代码

// 加密
public static string Encrypt (string str, string key) {
        AesCryptoServiceProvider aesCryptoProvider = new AesCryptoServiceProvider();

        byte[] byteBuff;

        try
        {
            aesCryptoProvider.Key = Encoding.UTF8.GetBytes(key);

            aesCryptoProvider.GenerateIV();
            aesCryptoProvider.IV = aesCryptoProvider.IV;
            byteBuff = Encoding.UTF8.GetBytes(str);

            byte[] encoded = aesCryptoProvider.CreateEncryptor().TransformFinalBlock(byteBuff, 0, byteBuff.Length);

            string ivHexString = ToHexString(aesCryptoProvider.IV);
            string encodedHexString = ToHexString(encoded);

        
            return ivHexString + ':' + encodedHexString; // 此处字符串拼接请忽略

        }
        catch (Exception ex)
        {
            Console.WriteLine(ex);
            return null;
        }
    }

//pkcs7UnPadding 填充的反向操作
func pkcs7UnPadding(data []byte) ([]byte, error) {
    length := len(data)
    if length == 0 {
        return nil, errors.New("加密字符串错误!")
    }
    //获取填充的个数
    unPadding := int(data[length-1])
    return data[:(length - unPadding)], nil
}

//AesDecrypt 解密
func AesDecrypt(data []byte, key []byte) ([]byte, error) {
    //创建实例
    block, err := aes.NewCipher(key)

    if err != nil {
        return nil, err
    }
    //获取块的大小
    blockSize := block.BlockSize()
    //使用cbc
    blockMode := cipher.NewCBCDecrypter(block, key[:blockSize])
    //初始化解密数据接收切片
    crypted := make([]byte, len(data))
    //执行解密
    blockMode.CryptBlocks(crypted, data)

    //去除填充
    crypted, err = pkcs7UnPadding(crypted)
    if err != nil {
        return nil, err
    }
    return crypted, nil
}