2013-06-26 95 views
0

我想解密一些文本并获取此错误。我做了很多谷歌并阅读文章。有很多人有同样的错误,但我无法解决我的问题。指定的初始化向量(IV)与此算法的块大小不匹配

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

IV由AS3crypto生产。您可以在密钥页签中看到this page. 中的演示。我的设置是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

尝试使用其他字符串编码。虽然我在我的课程中使用了与您相同的base64字符串,但我仍然可以控制IV代和编码。也许无论你使用UTF8还是某些类型的字节数组的字符串编码形式。

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

相关问题