I have written the same methods in two platforms which I believe should result same thing but its not happening. I have encrypted the same text with same key which result different. Can someone figure it out why is it happening ?
String: this is test
Key: 1234567812345678
PHP encrypted string: ybUaKwQlRNwOjJhxLWtLYQ==
C# encrypted string: r2YjEFPyDDacnPmDFcGTLA==
C# functions
static string Encrypt(string plainText, string key) { string cipherText; var rijndael = new RijndaelManaged() { Key = Encoding.UTF8.GetBytes(key), Mode = CipherMode.ECB, BlockSize = 128, }; ICryptoTransform encryptor = rijndael.CreateEncryptor(rijndael.Key, rijndael.IV); using (var memoryStream = new MemoryStream()) { using (var cryptoStream = new CryptoStream(memoryStream, encryptor, CryptoStreamMode.Write)) { using (var streamWriter = new StreamWriter(cryptoStream)) { streamWriter.Write(plainText); streamWriter.Flush(); } cipherText = Convert.ToBase64String(memoryStream.ToArray()); //cryptoStream.FlushFinalBlock(); } } return cipherText; } private static string Decrypt(string cipherText, string key) { string plainText; byte[] cipherArray = Convert.FromBase64String(cipherText); var rijndael = new RijndaelManaged() { Key = Encoding.UTF8.GetBytes(key), Mode = CipherMode.ECB, BlockSize = 128 }; ICryptoTransform decryptor = rijndael.CreateDecryptor(rijndael.Key, rijndael.IV); using (var memoryStream = new MemoryStream(cipherArray)) { using (var cryptoStream = new CryptoStream(memoryStream, decryptor, CryptoStreamMode.Read)) { using (var streamReader = new StreamReader(cryptoStream)) { plainText = streamReader.ReadToEnd(); } } } return plainText; } PHP functions
function string_encrypt($string, $key) { $crypted_text = mcrypt_encrypt( MCRYPT_RIJNDAEL_128, $key, $string, MCRYPT_MODE_ECB ); return base64_encode($crypted_text); } function string_decrypt($encrypted_string, $key) { return mcrypt_decrypt( MCRYPT_RIJNDAEL_128, $key, base64_decode($encrypted_string), MCRYPT_MODE_ECB ); } I am not so good in C# and I know the PHP function is working fine. So, there must be something done on C# functions. May be the string to be encrypted should converted to Latin chars.