0

我正在尝试解密一些文本并收到此错误。我做了很多谷歌和阅读文章。有很多人有同样的错误,但我无法解决我的问题。

下面是一些代码示例,您可以看到我正在使用的 IV。

IV 由 AS3crypto 生产。您可以在此页面中查看演示。 您可以在“密钥”选项卡上看到。我的设置是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
4

1 回答 1

0

尝试不同的字符串编码。虽然我在课堂上使用与您相同的 base64 字符串,但我可以控制 IV 的生成和编码。也许无论您从使用过的 UTF8 或类似的方式获得 IV 字节数组的字符串编码形式。

我想我在某处读到只有某些字节数组长度用作IV。一种检查方法是以各种编码从该字符串中获取一个字节数组,并使用最接近 2 的幂的字节数组(128、256... 或 192,因为这也是一个常见的幻数)。

于 2013-06-26T15:35:33.220 回答