我正在尝试解密一些文本并收到此错误。我做了很多谷歌并阅读文章。有很多人有同样的错误,但我无法解决我的问题。
下面是一些代码示例,您可以看到我正在使用的IV。
IV由AS3crypto制作。你可以在this page.看到演示 你可以在Secret Key选项卡上看到。我的设置是AES,CBC。
即。我不能改变IV,我认为IV是有效的。
我认为问题是我在.Net中设置IV的方式是不对的。
有什么想法吗?
提前致谢。
Using aesAlg As New AesCryptoServiceProvider
Dim IV_COMPONENT As Byte() = Convert.FromBase64String("a462114bca101105db976158381a4d05")
//Dim IV_COMPONENT As Byte() = Encoding.ASCII.GetBytes("a462114bca101105db976158381a4d05")
aesAlg.IV = IV_COMPONENT
aesAlg.Mode = CipherMode.CBC
' Create a decrytor to perform the stream transform.
Dim decryptor As ICryptoTransform = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV)
Using msDecrypt As New MemoryStream(cipherText)
Using csDecrypt As New CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read)
Using srDecrypt As New StreamReader(csDecrypt)
plaintext = srDecrypt.ReadToEnd()
End Using
End Using
End Using
End Using
答案 0 :(得分:0)
尝试不同的字符串编码。虽然我在课堂上使用了与你相同的base64字符串,但我控制了IV生成和编码。也许你从使用过的UTF8或其它类似的地方获得了IV字节数组的字符串编码形式。
我想我在某处读到只有某些字节数组长度用作IV。检查的一种方法是从各种编码中获取该字符串的字节数组,并使用最接近2的幂的字节数组(128,256 ......或192,因为这也是一个常见的幻数)。