I am working on a project where I have a C # application that has an encryption class that can encrypt and decrypt a string value. Now I want the web interface to work with my C # application using PHP.
I am trying to do the same encryption that my C # project does on my PHP website, but I cannot decide what I need to do.
Below is the code for my C # application.
public static string encrypt(string encryptionString) { byte[] clearTextBytes = Encoding.UTF8.GetBytes(encryptionString); SymmetricAlgorithm rijn = SymmetricAlgorithm.Create(); MemoryStream ms = new MemoryStream(); byte[] rgbIV = Encoding.ASCII.GetBytes("PRIVATE"); byte[] key = Encoding.ASCII.GetBytes("PRIVATE"); CryptoStream cs = new CryptoStream(ms, rijn.CreateEncryptor(key, rgbIV), CryptoStreamMode.Write); cs.Write(clearTextBytes, 0, clearTextBytes.Length); cs.Close(); return Convert.ToBase64String(ms.ToArray()); }
I am trying to use the following code in my PHP web interface
define("CIPHERKEY", "PRIVATE"); function encrypt($data) { //$cipher = mcrypt_module_open(MCRYPT_RIJNDAEL_256, '', MCRYPT_MODE_ECB, ''); $cipher = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_ECB, ''); //$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($cipher), MCRYPT_RAND); $iv = 'PRIVATE'; //$key = substr(CIPHERKEY, 0, mcrypt_enc_get_key_size($cipher)); $key =CIPHERKEY; if (mcrypt_generic_init($cipher, $key, $iv) != 1) { $cipherData = mcrypt_generic($cipher, $data); mcrypt_generic_deinit($cipher); mcrypt_module_close($cipher); $sanitizedCipherData = trim(base64_encode($cipherData)); return $sanitizedCipherData; } }
I tried various options, but can't find the right way to do this.
the iv variable uses the same key as the rgbIV variable in the C # application, and CIPHERKEY in the PHP web interface uses the same key as the key variable in my C # application.
Thanks for any help you can provide.
UPDATE At the moment, I continue to get different results. I am testing it by passing the password string.
In the current code above in PHP, I get NHHloywxlybbANIH5dS7SQ== as an encrypted string.
However, with the same line, I get the result n86Mwc5MRXzhT3v3A/uxEA==