簡體   English   中英

使用AES托管類時,填充無效且無法刪除錯誤

[英]Padding is invalid and cannot be removed error while using AES Managed class

我正在嘗試在Windows Phone中使用AES 256加密來確定密鑰,並使用IV來解密從服務器接收到的字符串。 在服務器端,使用AES256 / CBC / PkCS5填充,而我使用的是Windows代碼的AES托管類。

我收到以下錯誤:

使用AES托管類時,填充無效且無法刪除錯誤

能否請您提出寶貴的建議?

當加密和解密由於某種原因未使用相同的密鑰或初始化向量時,有時會收到有關無效填充的消息。 填充是添加到純文本末尾的一定數量的字節,以使其達到用於密碼工作的全部塊數。 在PKCS7填充中,每個字節等於添加的字節數,因此解密后始終可以將其刪除。 您的解密導致了一個字符串,其中最后n個字節不等於最后一個字節的值n(希望該句子有意義)。 因此,請仔細檢查您的密鑰。

確保在密碼上設置了正確的填充模式(僅作為示例,請檢查加密填充):

        cipher.Padding = PaddingMode.ISO10126; // example

另外,您只要設置密鑰就不需要設置KeySize。 設置KeySize將覆蓋現有的Key。 因此,只需在代碼中刪除此行:

        aesDecryptor.KeySize = 256;

最后,我能夠解密字符串。 我已應用HexStringToByte轉換,而不是StringToBytes轉換。

非常感謝您的投入。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM