title: Specified padding mode is not valid for this algorithm - c# - System.Security.Cryptography
body: <p>pretty new to c# and currently having a problem decrypting long passwords with an error of </p>
  
  <blockquote>
    <p>Specified key is not a valid size for this algorithm</p>
  </blockquote>
  
  <p>I know this has something to do with the encrypted password bits length not being supported but unsure how to go about suggested ways to allow for these longer passwords. </p>
  
  <p>Here's my encrypt and decrypt </p>
  
  <blockquote>
    <p>"cipherKey": "0123456789abcdef",    "cipherVector":
    "somereallycooliv"</p>
  </blockquote>
  
  <pre><code>using System;
  using System.Security.Cryptography;
  using System.IO;
  using System.Text;
  
  namespace DataApi
  {
  public class Encryption
  {
      private readonly IConfigurationService _configService;
  
  
      private const string _vector = "cipherVector";
      private const string _key = "cipherKey";
  
      public Encryption(IConfigurationService configService)
      {
          _configService = configService;
      }
      public string EncryptString(string text)
      {
          if(string.IsNullOrEmpty(text))
          {
              return "";
          }
          try
          {
  
        var key = Encoding.UTF8.GetBytes(_configService.Get(_key));
          byte[] IV = Encoding.ASCII.GetBytes(_configService.Get(_vector));
  
          using (var aesAlg = Aes.Create())
          {
              using (var encryptor = aesAlg.CreateEncryptor(key, IV))
              {
                  using (var msEncrypt = new MemoryStream())
                  {
                      using (var csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
                      using (var swEncrypt = new StreamWriter(csEncrypt))
                      {
                          swEncrypt.Write(text);
                      }
  
                      var decryptedContent = msEncrypt.ToArray();
  
                      var result = new byte[IV.Length + decryptedContent.Length];
  
                      Buffer.BlockCopy(IV, 0, result, 0, IV.Length);
                      Buffer.BlockCopy(decryptedContent, 0, result, IV.Length, decryptedContent.Length);
  
                      return Convert.ToBase64String(result);
                  }
              }
          }
          }
          catch(Exception e) {
               Loggifer.Error("Unable to encrypt string: "+text , e );
  
              throw e;
          }
      }
  
      public string DecryptString(string cipherText)
      {
          if(string.IsNullOrEmpty(cipherText))
          {
              return "";
          }
          try
          {
              var fullCipher = Convert.FromBase64String(cipherText);
  
              byte[] IV = Encoding.ASCII.GetBytes(_configService.Get(_vector));
              var cipher = new byte[16];
  
              Buffer.BlockCopy(fullCipher, 0, IV, 0, IV.Length);
              Buffer.BlockCopy(fullCipher, IV.Length, cipher, 0, IV.Length);
              var key = Encoding.UTF8.GetBytes(_configService.Get(_key));
  
              using (var aesAlg = Aes.Create())
              {
                  using (var decryptor = aesAlg.CreateDecryptor(key, IV))
                  {
                      string result;
                      using (var msDecrypt = new MemoryStream(cipher))
                      {
                          using (var csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
                          {
                              using (var srDecrypt = new StreamReader(csDecrypt))
                              {
                                  result = srDecrypt.ReadToEnd();
                              }
                          }
                      }
  
                      return result;
                  }
              }
          }
          catch (Exception e)
          {
              Loggifer.Error("Unable to decrypt string: "+cipherText , e );
              throw e;
          }
      }
  
  }
  }
  </code></pre>