2013-06-26 46 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,因爲這也是常見的幻數)的字節數組。