Alipay IOT applet AES key to decrypt

 

 

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);
        }

 

--

Guess you like

Origin www.cnblogs.com/runliuv/p/11846938.html
Recommended