title: Java encode and .NET decode
body: <p>The encryption is in java:</p>
  
  <pre><code>
  String salt = "DC14DBE5F917C7D03C02CD5ADB88FA41";
  String password = "25623F17-0027-3B82-BB4B-B7DD60DCDC9B";
  
  char[] passwordChars = new char[password.length()];
  password.getChars(0,password.length(), passwordChars, 0);
  
  SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
  KeySpec spec = new PBEKeySpec(passwordChars, salt.getBytes(), 2, 256);
  SecretKey sKey = factory.generateSecret(spec);
  byte[] raw = _sKey.getEncoded();
  
  String toEncrypt = "The text to be encrypted.";
  
  Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding", "BC");
  cipher.init(Cipher.ENCRYPT_MODE, skey);
  
  AlgorithmParameters params = cipher.getParameters();
  byte[] initVector = params.getParameterSpec(IvParameterSpec.class).getIV();
  
  byte[] encryptedBytes = cipher.doFinal(toEncrypt.getBytes());
  
  </code></pre>
  
  <p>While the decryption is in c#:</p>
  
  <pre><code>
  string hashAlgorithm = "SHA1";
  int passwordIterations = 2;
  int keySize = 256;
  
  byte[] saltValueBytes = Encoding.ASCII.GetBytes( salt );
  byte[] cipherTextBytes = Convert.FromBase64String( cipherText );
  
  PasswordDeriveBytes passwordDB = new PasswordDeriveBytes(password, saltValueBytes, hashAlgorithm  passwordIterations );
  
  byte[] keyBytes = passwordDB.GetBytes( keySize / 8 );
  
  RijndaelManaged symmetricKey = new RijndaelManaged();
  symmetricKey.Mode = CipherMode.CBC;
  ICryptoTransform decryptor = symmetricKey.CreateDecryptor( keyBytes, initVector );
  
  MemoryStream memoryStream = new MemoryStream( cipherTextBytes );
  
  CryptoStream cryptoStream = new CryptoStream( memoryStream, decryptor, CryptoStreamMode.Read );
  
  byte[] plainTextBytes = new byte[ cipherTextBytes.Length ];
  
  int decryptedByteCount = cryptoStream.Read( plainTextBytes, 0, plainTextBytes.Length );
  
  memoryStream.Close();
  cryptoStream.Close();
  
  string plainText = Encoding.UTF8.GetString( plainTextBytes, 0, decryptedByteCount );
  
  </code></pre>
  
  <p>The decryption failed with exception "Padding is invalid and cannot be removed."</p>
  
  <p>Any idea what might be the problem?</p>