1. 首页>
  2. 技术文章>
  3. .net微信小程序解密用户信息的时候提示无法填充

.net微信小程序解密用户信息的时候提示无法填充

6/6/18 8:50:24 PM 浏览 1278 评论 0

微信小程序

.net微信小程序解密用户信息的时候提示“无法填充“,尝试了下面的方法,没有报错了,

 public string ShareInfoAes(string sessionKey, string encryptedData, string iv)
 {
            byte[] Key = Convert.FromBase64String(sessionKey);
            byte[] Iv = Convert.FromBase64String(iv);

            SymmetricAlgorithm aes = Aes.Create();
            aes.KeySize = 256;
            aes.BlockSize = 128;
            aes.Mode = CipherMode.CBC;
            aes.Padding = PaddingMode.None;
            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))
                {
                    byte[] xXml = Convert.FromBase64String(encryptedData);
                    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 Encoding.UTF8.GetString(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;
}


网友讨论