Re: Encryption Error "Length of the data to decrypt is invalid"

From: DalePres (don-t-spa-m-me_at_lea-ve-me-a-lone--.com)
Date: 03/15/05


Date: Mon, 14 Mar 2005 20:11:56 -0600

Here's a sample that can should help:

http://www.dalepreston.com/Blog/Archives/2005_02_20_Archive.html

DalePres
MCAD, MCDBA, MCSE

"Jimski" <jimski.brock@gmail.com> wrote in message
news:1110818078.312470.128830@f14g2000cwb.googlegroups.com...
> Hello all,
>
>
> I am having a problem where I get an error message when I call
> FlushFinalBlock when decrypting my encrypted text. I am using the
> Rijndael algorithm.
>
> The error message is "Length of the data to decrypt is invalid" and
> occurs on the csDecrypt.FlushFinalBlock.
>
> Please find below the two routines I use to encrypt my text and decrypt
> the text. I have used the two routines in a very simple app that takes
> a string from a label and then calls EncryptString and displays it on
> another label. I then call DecryptString and pass it the contents of
> the encrypted label text property.
>
> The CryptKey is byte[32] and is set on creation of the object
> containing these methods.
>
> Could somebody please enlighten me as to what I am doing wrong!
>
>
> Thanks in advance
>
> Jimski
>
>
>
> public string EncryptString(string pText)
> {
> string strResult = "";
>
> try
> {
> // Create the rijndael encryptor
> ICryptoTransform encryptor =
> _RijndaelEncryptor.CreateEncryptor();
>
> // Encrypt the data to the memory stream
> MemoryStream msEncrypt = new MemoryStream(pText.Length);
> CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor,
> CryptoStreamMode.Write);
>
> // Convert the string to a byte array.
> byte[] beforeEncrypt = Encoding.UTF8.GetBytes(pText);
>
> // Write all the data to the crypto stream and flush it to the
> MemoryStream.
> csEncrypt.Write(beforeEncrypt, 0, beforeEncrypt.Length);
> csEncrypt.FlushFinalBlock();
>
> // Read encrypted array of bytes from the MemoryStream
> byte[] afterEncrypt = new byte[msEncrypt.Length];
> msEncrypt.Position = 0;
> msEncrypt.Read(afterEncrypt, 0, afterEncrypt.Length);
>
> csEncrypt.Close();
>
> // Returns the encrypted text as a string
> strResult = Encoding.UTF8.GetString(afterEncrypt);
> }
> catch (Exception ex)
> {
> // An error occurred during encryption
> }
> return strResult;
> }
>
>
> public string DecryptString(string pEncryptedText)
> {
> string strResult = "";
>
> try
> {
> // Convert the string to a byte array.
> byte[] beforeDecrypt = Encoding.UTF8.GetBytes(pEncryptedText);
>
> // Create the rijndael decryptor
> ICryptoTransform decryptor =
> _RijndaelEncryptor.CreateDecryptor();
>
> // decrypt the data to the memory stream
> MemoryStream msDecrypt = new
> MemoryStream(beforeDecrypt.Length);
> CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor,
> CryptoStreamMode.Write);
>
> // Write all the data to the crypto stream and flush it.
> csDecrypt.Write(beforeDecrypt, 0, beforeDecrypt.Length);
> // ERROR occurs in this next line.
> csDecrypt.FlushFinalBlock();
>
> // Read decrypted array of bytes from the MemoryStream
> byte[] afterDecrypt = new byte[msDecrypt.Length];
> msDecrypt.Position = 0;
> msDecrypt.Read(afterDecrypt, 0, afterDecrypt.Length);
>
> csDecrypt.Close();
>
> // Returns the decrypted text as a string
> strResult = Encoding.UTF8.GetString(afterDecrypt);
> }
> catch (Exception ex)
> {
> // Show error - which in this case is "Length of the data to
> decrypt is invalid"
> }
>
> return strResult;
> }
>



Relevant Pages

  • Re: Simple Encryption/Decryption
    ... When I try the Decrypt method I can't even run the application ... > cause .NET gives me a syntax error on the return line of the decrypt ... Encrypt seems to work fine, ... >>> public string encrypt ...
    (microsoft.public.dotnet.security)
  • Encryption Error "Length of the data to decrypt is invalid"
    ... I am having a problem where I get an error message when I call ... Please find below the two routines I use to encrypt my text and decrypt ... a string from a label and then calls EncryptString and displays it on ...
    (microsoft.public.dotnet.languages.csharp)
  • RE: NTE_BAD_DATA
    ... They are NOT used DIRECTLY to encrypt / decrypt data; ... you should generate a RANDOM SESSION KEY and select a SYMMETRIC ENCRYPTION ... // imported from a BLOB read in from the source file or having ...
    (microsoft.public.platformsdk.security)
  • Re: Back Doors
    ... >> Design into the system a master key. ... Encrypt that with public key. ... Decrypt random symmetric key with private key. ...
    (sci.crypt)
  • Re: CAPI and RC4: can not decrypt when Final parameter is set to F
    ... to store ASYMMETRIC key pairs - never symmetric keys like RC4, ... Now when you need to encrypt at one place and decrypt at the other normally ... Get a HCRYPTPROV handle to a key container with CryptAcquireContext ...
    (microsoft.public.platformsdk.security)