I have some data provided by our third party which is encrypted using a C# algorithm. Please see below:
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 < KEY_SIZE; i++)
{
if (i >= 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);
}
I would like to write the decryption for this in PHP. I was also provided just a key they called it "AES256 Encryption key".
Also the decryption algorithm they provided me in C# is as follows:
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 < KEY_SIZE; i++)
{
if (i >= 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;
}
But I want to write the decryption in PHP. As I am very new to encryption stuff please guide me in the right direction.
Many thanks....