title: C# encryption (AesManaged) to PHP equivalent
body: <p>I have some data provided by our third party which is encrypted using a C# algorithm. Please see below:</p>
  
  <pre><code>using System.Security.Cryptography;
  
  private static int KEY_SIZE = 32;
  private static byte[] IV = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
  
  public static string EncryptString(string plaintext, string password)
  {
      byte[] key = new byte[KEY_SIZE];
      byte[] passwordbytes = Encoding.UTF8.GetBytes(password);
  
      for (int i = 0; i &lt; KEY_SIZE; i++)
      {
          if (i &gt;= passwordbytes.Length)
              key[i] = 0;
          else
              key[i] = passwordbytes[i];
      }
  
      byte[] encrypted;
  
      // Create an AesCryptoServiceProvider object
      // with the specified key and IV.
      using (AesManaged aesAlg = new AesManaged())
      {
          aesAlg.Mode = CipherMode.CBC;
          aesAlg.KeySize = KEY_SIZE * 8;
  
          // Create a decrytor to perform the stream transform.
          ICryptoTransform encryptor = aesAlg.CreateEncryptor(key, IV);
  
          // Create the streams used for encryption.
          using (MemoryStream msEncrypt = new MemoryStream())
          {
              using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
              {
                  using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
                  {
                      //Write all data to the stream.
                      swEncrypt.Write(plaintext);
                  }
                  encrypted = msEncrypt.ToArray();
              }
          }
      }
  
      return Convert.ToBase64String(encrypted);
  }
  </code></pre>
  
  <p>I would like to write the decryption for this in PHP. I was also provided just a key they called it "AES256 Encryption key".</p>
  
  <p>Also the decryption algorithm they provided me in C# is as follows:</p>
  
  <pre><code>public static string DecryptString(string cipherText, string password)
  {
      byte[] key = new byte[KEY_SIZE];
      byte[] passwordbytes = Encoding.UTF8.GetBytes(password);
  
      for (int i = 0; i &lt; KEY_SIZE; i++)
      {
          if (i &gt;= passwordbytes.Length)
              key[i] = 0;
          else
              key[i] = passwordbytes[i];
      }
  
      byte[] CipherTextBytes = Convert.FromBase64String(cipherText);
  
      // Declare the string used to hold
      // the decrypted text.
      string plaintext = null;
  
      // Create an AesCryptoServiceProvider object
      // with the specified key and IV.
      using (AesManaged aesAlg = new AesManaged())
      {
          aesAlg.Mode = CipherMode.CBC;
          aesAlg.KeySize = KEY_SIZE * 8;
  
          // Create a decrytor to perform the stream transform.
          ICryptoTransform decryptor = aesAlg.CreateDecryptor(key, IV);
  
          // Create the streams used for decryption.
          using (MemoryStream msDecrypt = new MemoryStream(CipherTextBytes))
          {
              using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
              {
                  using (StreamReader srDecrypt = new StreamReader(csDecrypt))
                  {
                      // Read the decrypted bytes from the decrypting stream
                      // and place them in a string.
                      plaintext = srDecrypt.ReadToEnd();
                  }
              }
          }
  
      }
      return plaintext;
  }
  </code></pre>
  
  <p>But I want to write the decryption in PHP. As I am very new to encryption stuff please guide me in the right direction. </p>
  
  <p>Many thanks....</p>