KEY actual test is 16 byte, byte [] byteKEY = System.Convert.FromBase64String (key); Note: Convert.FromBase64String is transferred byte [], rather than turn Encoding.UTF8.GetBytes byte [].
IV is 16 byte, are all 0;
--
/// <the Summary> /// Alipay applet AES key to decrypt /// </ the Summary> /// <param name = "decryptStr"> </ param> /// <param name = "Key"> small background program is provided in the AES key </ param> /// <Returns> </ Returns> public static String AliPayLittleAppAesDecrypt ( String decryptStr, String key) { // IV 16 th byte is 0 int ivSize = 16 ; byte [ ] = IV new new byte [ivSize]; for (int i = 0; I <ivSize; ++ I) { IV [I] = 0 ; } // https://docs.open.alipay.com/common/104567 // the AES Alipay applet key string is the BASE64 encoded , so here is a bYTE KEY System.Convert.FromBase64String // after conversion, the 16 byte, is AES128. byte [] = byteKEY System.Convert.FromBase64String (Key); byte [] = byteDecrypt System.Convert.FromBase64String (decryptStr); var _aes = new new the RijndaelManaged (); _aes.Padding = PaddingMode.PKCS7; _aes.Mode = CipherMode.CBC; //重新指定下KEY和IV,让 RijndaelManaged自动计算KEYSIZE; _aes.Key = byteKEY; _aes.IV = iv; var _crypto = _aes.CreateDecryptor(byteKEY, iv); byte[] decrypted = _crypto.TransformFinalBlock( byteDecrypt, 0, byteDecrypt.Length); _crypto.Dispose(); return Encoding.UTF8.GetString(decrypted); }
--