C# 要解密的数据长度无效。这真的是长度问题吗?
我想解密一个base64编码的HTTP响应。我已经得到了C# 要解密的数据长度无效。这真的是长度问题吗?,c#,encryption,C#,Encryption,我想解密一个base64编码的HTTP响应。我已经得到了fPassword和fSalt,但是响应的偏移量和字符串的长度我无法确认 现在我得到一个提示: 加密异常:要解密的数据长度无效。 这是否意味着数据的偏移量或长度不正确?这个错误是什么意思 当提示执行FlushfinalBlock时发生异常 public static byte[] dd_1(string string_0) { byte[] buffer = Convert.FromBase64String(s
fPassword
和fSalt
,但是响应的偏移量和字符串的长度我无法确认
现在我得到一个提示:
加密异常:要解密的数据长度无效。
这是否意味着数据的偏移量或长度不正确?这个错误是什么意思
当提示执行FlushfinalBlock时发生异常
public static byte[] dd_1(string string_0)
{
byte[] buffer = Convert.FromBase64String(string_0);
AesManaged managed = new AesManaged();
Rfc2898DeriveBytes bytes = new Rfc2898DeriveBytes(fPassword, fSalt);
managed.BlockSize = managed.LegalBlockSizes[0].MaxSize;
managed.KeySize = managed.LegalKeySizes[0].MaxSize;
managed.Key = bytes.GetBytes(managed.KeySize / 8);
managed.IV = bytes.GetBytes(managed.BlockSize / 8);
ICryptoTransform transform = managed.CreateDecryptor();
MemoryStream stream = new MemoryStream();
CryptoStream stream2 = new CryptoStream(stream, transform, CryptoStreamMode.Write);
stream2.Write(buffer, 0, buffer.Length);
stream2.Close();
return stream.ToArray();
}
你是怎么加密的?“要解密的数据长度无效”通常意味着您在加密端做了一些错误的事情,要么是在读取字节[]之前忘记清除流,要么是将字节[]编码为不正确的文本。@Scott Chamberlain:谢谢!这些数据不是我加密的,而是别人加密的。但是我们知道加密算法。我不熟悉加密算法,只是通过反向操作得到了silverlight客户端资源。我确信我已经得到了完整的加密HTTP响应。所以我假设我用于从整个加密HTTP响应中剪切的偏移量是错误的……我的猜测是,它本质上意味着“你给我的数据是垃圾,我知道,因为它的长度不正确”。你读过书吗?在使用其他人的数据进行测试之前,您还应该使用加密的数据测试代码(这样您就可以验证数据是否绝对正确)。@Justin:谢谢您的提示,让我再试一次。