“Padding is invalid and cannot be removed” using AesManaged

前端 未结 6 890
傲寒
傲寒 2020-11-29 04:55

I\'m trying to get simple encryption/decryption working with AesManaged, but I keep getting an exception when trying to close the decryption stream. The string here gets en

6条回答
  •  伪装坚强ぢ
    2020-11-29 05:53

    As others have mentioned, this error can occur if the key/iv is not correctly initialized for decryption. In my case I need to copy key and iv from some larger buffer. Here's what I did wrong:

    Does not work: (Padding is invalid and cannot be removed)

    aes.Key = new byte[keySize];
    Buffer.BlockCopy(someBuffer, keyOffset, aes.Key, 0, keySize);
    
    aes.IV = new byte[ivSize];
    Buffer.BlockCopy(someBuffer, ivOffset, aes.IV, 0, ivSize);
    

    Works:

    var key = new byte[keySize];
    Buffer.BlockCopy(someBuffer, keyOffset, key, 0, keySize);
    aes.Key = key;
    
    var iv = new byte[ivSize];
    Buffer.BlockCopy(someBuffer, ivOffset, iv, 0, ivSize);
    aes.IV = iv;
    

    The OP did not make this mistake, but this might be helpful for others seeing the same error.

提交回复
热议问题