使用AES解密时StreamReader返回空字符串的问题求助
使用AES解密时StreamReader返回空字符串的问题求助
各位大佬好!最近在做AES加解密功能,加密逻辑写出来了,但解密环节直接卡壳——用StreamReader读取解密后的内容居然返回空字符串,试了好多次都这样,实在摸不着头脑,来求各位帮忙看看问题出在哪!
先贴一下我的加密代码:
public static byte[] TestEncrypt(string plainText, byte[] key, byte[] iv) { using Aes aes = Aes.Create(); aes.Key = key; aes.IV = iv; // Create a new MemoryStream object to contain the encrypted bytes. using MemoryStream memoryStream = new MemoryStream(); // Create a CryptoStream object to perform the encryption. using CryptoStream cryptoStream = new CryptoStream(memoryStream, aes.CreateEncryptor(), CryptoStreamMode.Write); // 我是用StreamWriter把明文写入CryptoStream的,代码大概是这样: using StreamWriter streamWriter = new StreamWriter(cryptoStream); streamWriter.Write(plainText); // 后来才想到可能要补这个,但加了还是没解决解密空的问题 cryptoStream.FlushFinalBlock(); return memoryStream.ToArray(); }
再贴一下解密的代码:
public static string TestDecrypt(byte[] cipherText, byte[] key, byte[] iv) { using Aes aes = Aes.Create(); aes.Key = key; aes.IV = iv; using MemoryStream memoryStream = new MemoryStream(cipherText); using CryptoStream cryptoStream = new CryptoStream(memoryStream, aes.CreateDecryptor(), CryptoStreamMode.Read); using StreamReader streamReader = new StreamReader(cryptoStream); // 这里读出来的居然是空字符串! return streamReader.ReadToEnd(); }
我确认过密钥和IV完全对应,加密后的字节数组也有正常长度,但解密后就是读不出内容。有没有大佬遇到过类似的坑?求指点!
备注:内容来源于stack exchange,提问作者Gouri
相关产品推荐
相关产品推荐

