2013-03-31 80 views
2

我正在嘗試使用rijndael algorythm加密和解密文件,但我一直在收到錯誤「要加密的數據的長度無效。」。我能夠加密文件,但我無法解密它。這是我的解密功能;C#Rijndael CryptographicException「要加密的數據的長度無效。」

public static byte[] Decrypt(byte[] toEncryptArray) 
    { 
     byte[] keyArray = UTF8Encoding.UTF8.GetBytes("-key-"); 
     RijndaelManaged rDel = new RijndaelManaged(); 
     rDel.Key = keyArray; 
     rDel.Padding = PaddingMode.PKCS7; 
     ICryptoTransform cTransform = rDel.CreateDecryptor(); 
     return cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length); 
    } 

我真的不知道我做錯了什麼,因爲我可以加密它非常好。我試圖解密的文件是11 kb。

+0

你確定這是你得到的例外嗎?當你嘗試設置密鑰時,你應該得到一個,因爲它的長度是無效的。 – Lee

+0

@李是的我相信那是我得到的例外,那不是我真正的關鍵。真正的關鍵是更長的時間,我用另一把鑰匙測試過它,然後出現一個實際上與鑰匙有關的錯誤。 – user2073973

+1

請添加您的加密代碼。 –

回答

0

您應該使用CryptoStream對象,該對象將自動調用正確的ICryptoTransform.TransformFinalBlockICryptoTransform.TransformBlock方法。

您尚未發佈加密代碼,但檢查填充模式是否相同(即PaddingMode.PKCS7),並且啓動向量設置爲相同的字符串。

相關問題