title: RSA Data decryption error.The data to be decrypted exceeds the maximum for this modulus of 64 bytes
body: <p>while encrypting and descripting the string with rsa provider I am getting this error.</p>
  
  <p>RSA Data decryption error.The data to be decrypted exceeds the maximum for this modulus of 64 bytes.</p>
  
  <p>Can any one have idea how to slove this error?</p>
  
  <pre>
  
      internal sealed class RSAProvider
      {
          #region key store class
  
          [Serializable]
              private struct rsaKey
          {
              public rsaKey(RSAParameters rsaKeyInfo)
              {
                  D = rsaKeyInfo.D;
                  DP = rsaKeyInfo.DP;
                  DQ = rsaKeyInfo.DQ;
                  Exponent = rsaKeyInfo.Exponent;
                  InverseQ = rsaKeyInfo.InverseQ;
                  Modulus = rsaKeyInfo.Modulus;
                  P = rsaKeyInfo.P;
                  Q = rsaKeyInfo.Q;
              }
  
              public RSAParameters CreateRSAKey()
              {
                  RSAParameters rsaKeyInfo = new RSAParameters();
  
                  rsaKeyInfo.D = D;
                  rsaKeyInfo.DP = DP;
                  rsaKeyInfo.DQ = DQ;
                  rsaKeyInfo.Exponent = Exponent;
                  rsaKeyInfo.InverseQ = InverseQ;
                  rsaKeyInfo.Modulus = Modulus;
                  rsaKeyInfo.P = P;
                  rsaKeyInfo.Q = Q;
  
                  return rsaKeyInfo;
              }
  
              public byte[] D;
              public byte[] DP;
              public byte[] DQ;
              public byte[] Exponent;
              public byte[] InverseQ;
              public byte[] Modulus;
              public byte[] P;
              public byte[] Q;
          }
  
          #endregion
  
          private static RSAParameters rsaKeyParameters;
  
          static RSAProvider()
          {
              string rsaKeyString = System.Configuration.ConfigurationSettings.AppSettings["RSAKey"];
              if(rsaKeyString != null)
              {
                  rsaKeyParameters = GetKeyByString(rsaKeyString);
              }
          }
  
          private RSAProvider()
          {
          }
  
          private static RSAParameters RSAKeyInfo
          {
              get
              {
                  return rsaKeyParameters;
              }
          }
  
          private static bool DoOAEPPadding
          {
              get
              {
                  return false;
              }
          }
  
          public static string GenerateKey(int keySize)
          {
              //Create a new instance of RSACryptoServiceProvider to generate
              //public and private key data.
              RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(keySize);
  
              RSAParameters rsaKeyInfo = RSA.ExportParameters(true);
  
              return GetKeyString(rsaKeyInfo);
          }
  
  
          #region Encrypt
  
          public static byte[] Encrypt(byte[] dataToEncrypt, string rsaKeyString)
          {
              RSAParameters rsaKeyInfo = GetKeyByString(rsaKeyString);
  
              return Encrypt(dataToEncrypt, rsaKeyInfo);
          }
  
          public static byte[] Encrypt(byte[] dataToEncrypt, RSAParameters rsaKeyInfo)
          {
              try
              {   
                  //Create a new instance of RSACryptoServiceProvider.
                 // Common.Identity.ImpersonateValidUser("prana", "eetplpvt", "Avdhoota1985");
                  RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
  
                  //Import the RSA Key information. This only needs
                  //toinclude the public key information.
                  RSA.ImportParameters(rsaKeyInfo);
  
                  //Encrypt the passed byte array and specify OAEP padding.  
                  //OAEP padding is only available on Microsoft Windows XP or
                  //later.  
                  //return RSA.Encrypt(dataToEncrypt, DoOAEPPadding);
                  byte[] data = RSA.Encrypt(dataToEncrypt, DoOAEPPadding);
                  RSA.Clear();
                  //Common.Identity.UndoImpersonation();
                  return data;
              }
                  //Catch and display a CryptographicException  
                  //to the console.
              catch(CryptographicException e)
              {
                  // Updated By Divya Bhalodia on 27th June 2008 for Localization task
                  //throw new Exception("Data encryption error.", e);
                  Common.EnumLocalization.EnumLocalization loc = new Common.EnumLocalization.EnumLocalization(ASP.BL.ApplicationUsers.ApplicationUserController.CurrentUserCulture.Code, ASP.BL.Applications.ApplicationController.CurrentApplicationInfo.ItemId);
                  throw new Exception(loc.LocalizeString("RSA Data encryption error.") + e.Message, e);
                  // end Updated - Divya
              }
          }
  
          public static byte[] Encrypt(byte[] dataToEncrypt)
          {
              return Encrypt(dataToEncrypt, RSAKeyInfo);
          }
  
          #endregion
  
          #region Decrypt
  
          public static byte[] Decrypt(byte[] dataToDecrypt, string rsaKeyString, bool doOAEPPadding)
          {
              RSAParameters rsaKeyInfo = GetKeyByString(rsaKeyString);
              return Decrypt(dataToDecrypt, rsaKeyInfo, doOAEPPadding);
          }
  
          public static byte[] Decrypt(byte[] dataToDecrypt, RSAParameters rsaKeyInfo, bool doOAEPPadding)
          {
              try
              {
                  //Create a new instance of RSACryptoServiceProvider.
                  Common.Identity.ImpersonateValidUser();
                  RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
  
                  //Import the RSA Key information. This needs
                  //to include the private key information.
                  RSA.ImportParameters(rsaKeyInfo);
  
                  //Decrypt the passed byte array and specify OAEP padding.  
                  //OAEP padding is only available on Microsoft Windows XP or
                  //later.  
                  //return RSA.Decrypt(dataToDecrypt, doOAEPPadding);
                  byte[] data = RSA.Decrypt(dataToDecrypt, doOAEPPadding);
                  RSA.Clear();
                  Common.Identity.UndoImpersonation();
                  return data;
              }
                  //Catch and display a CryptographicException  
                  //to the console.
              catch(CryptographicException e)
              {
  
                  // Updated By Divya Bhalodia on 27th June 2008 for Localization task
                  //throw new Exception("Data decryption error.", e);
                  Common.EnumLocalization.EnumLocalization loc = new Common.EnumLocalization.EnumLocalization(ASP.BL.ApplicationUsers.ApplicationUserController.CurrentUserCulture.Code, ASP.BL.Applications.ApplicationController.CurrentApplicationInfo.ItemId);
                  throw new Exception(loc.LocalizeString("RSA Data decryption error.") + e.Message, e);
                  // end Updated - Divya
              }
          }
  
          public static byte[] Decrypt(byte[] dataToDecrypt)
          {
              return Decrypt(dataToDecrypt, RSAKeyInfo, DoOAEPPadding);
          }
          #endregion
  
          #region Additional functions
  
          private static string GetKeyString(RSAParameters rsaKeyInfo)
          {
              byte[] tmp;
              rsaKey k = new rsaKey(rsaKeyInfo);
              BinaryFormatter formater = new BinaryFormatter();
  
              using(MemoryStream stream = new MemoryStream())
              {
                  formater.Serialize(stream, k);
                  tmp = stream.ToArray();
              }
  
              Code(tmp);
  
              return Convert.ToBase64String(tmp);
          }
  
  
          private static RSAParameters GetKeyByString(string rsaKeyString)
          {
              rsaKey k;
  
              byte[] tmp = Convert.FromBase64String(rsaKeyString);
              Code(tmp);
  
              BinaryFormatter formater = new BinaryFormatter();
  
              using(MemoryStream stream = new MemoryStream(tmp))
              {
                  k = (rsaKey)formater.Deserialize(stream);
              }
              return k.CreateRSAKey();
          }
  
  
          private static void Code(byte[] tmp)
          {
              byte mask1 = 0x55;
              byte mask3 = 0xB9;
              byte mask4 = 0xCF;
  
              for(int i = 0; i 
  </pre>