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....