解密方法:
func AesDecryptCBC(encrypted []byte, key []byte, iv []byte) (decrypted []byte) { block, _ := aes.NewCipher(key) // 分组秘钥 //blockSize := block.BlockSize() // 获取秘钥块的长度 blockMode := cipher.NewCBCDecrypter(block,iv) // 加密模式 decrypted = make([]byte, len(encrypted)) // 创建数组 blockMode.CryptBlocks(decrypted, encrypted) // 解密 decrypted = pkcs7UnPadding(decrypted) // 去除补全码 return decrypted }
微信返回的数据需要先做base64解码
encryptedData,sessionKey和iv都需要先解码
//解密微信数据 base64解码后 使用aes-cbc-128 pkcs7UnPadding填充方式解密 encrypted, _ := base64.StdEncoding.DecodeString(params["encryptedData"]) keyB, _ := base64.StdEncoding.DecodeString(userInfo.SessionKey) ivB, _ := base64.StdEncoding.DecodeString(params["iv"]) decrypted := enums.AesDecryptCBC(encrypted, keyB, ivB)
//接收数据
returnMap := make(map[string]interface{}) json.Unmarshal(decrypted, &returnMap)