在作小程序時,官方沒有C#的解密,本身給寫一個封裝,但願能夠幫到你們算法
#region 解密 #region 私有方法 private static byte[] AES_Decrypt(String Input, byte[] Iv, byte[] Key) { RijndaelManaged aes = new RijndaelManaged(); aes.KeySize = 128;//原始:256 aes.BlockSize = 128; aes.Mode = CipherMode.CBC; aes.Padding = PaddingMode.PKCS7; aes.Key = Key; aes.IV = Iv; var decrypt = aes.CreateDecryptor(aes.Key, aes.IV); byte[] xBuff = null; using (var ms = new MemoryStream()) { using (var cs = new CryptoStream(ms, decrypt, CryptoStreamMode.Write)) { // cs.Read(decryptBytes, 0, decryptBytes.Length); // cs.Close(); // ms.Close(); byte[] xXml = Convert.FromBase64String(Input); byte[] msg = new byte[xXml.Length + 32 - xXml.Length % 32]; Array.Copy(xXml, msg, xXml.Length); cs.Write(xXml, 0, xXml.Length); } xBuff = decode2(ms.ToArray()); } return xBuff; } private static byte[] decode2(byte[] decrypted) { int pad = (int)decrypted[decrypted.Length - 1]; if (pad < 1 || pad > 32) { pad = 0; } byte[] res = new byte[decrypted.Length - pad]; Array.Copy(decrypted, 0, res, 0, decrypted.Length - pad); return res; } #endregion /// <summary> /// 解密全部消息的基礎方法 /// </summary> /// <param name="sessionKey">儲存在 SessionBag 中的當前用戶 會話 SessionKey</param> /// <param name="encryptedData">接口返回數據中的 encryptedData 參數</param> /// <param name="iv">接口返回數據中的 iv 參數,對稱解密算法初始向量</param> /// <returns></returns> public static string DecodeEncryptedData(string sessionKey, string encryptedData, string iv) { var aesCipher = Convert.FromBase64String(encryptedData); var aesKey = Convert.FromBase64String(sessionKey); var aesIV = Convert.FromBase64String(iv); var result = AES_Decrypt(encryptedData, aesIV, aesKey); var resultStr = Encoding.UTF8.GetString(result); return resultStr; } #endregion