Я уже реализовал шифрование Rijandael 256 на стороне C #, которое выглядит следующим образом:
public static string EncryptPasswordForWordpressPlugin(string message)
{
const string Ivstring = "W4jlzx2XaqQTtbd67813xys4133tl2S7";
string keystring = "I7R9VdkzGQ215iCkC0940ST01Wk58Mr9";
byte[] key = ASCIIEncoding.UTF8.GetBytes(keystring);
byte[] iv = ASCIIEncoding.UTF8.GetBytes(Ivstring);
string encrypted = null;
var rj = new RijndaelManaged {BlockSize = 256};
rj.Key = key;
rj.IV = iv;
rj.Mode = CipherMode.CBC;
try
{
var ms = new MemoryStream();
using (var cs = new CryptoStream(ms, rj.CreateEncryptor(key, iv), CryptoStreamMode.Write))
{
using (var sw = new StreamWriter(cs))
{
sw.Write(message);
sw.Close();
}
cs.Close();
}
byte[] encoded = ms.ToArray();
encrypted = Convert.ToBase64String(encoded);
ms.Close();
}
catch (Exception e)
{
Console.WriteLine("An error occurred: {0}", e.Message);
}
finally
{
rj.Clear();
}
return encrypted;
}
А в PHP у меня была реализация расшифровки с помощью mcrypt:
class Decrypt {
protected $mcrypt_cipher = MCRYPT_RIJNDAEL_256;
protected $mcrypt_mode = MCRYPT_MODE_CBC;
protected $key = "I7R9VdkzGQ215iCkC0940ST01Wk58Mr9";
protected $iv = "W4jlzx2XaqQTtbd67813xys4133tl2S7";
public function decrypt($encrypted){
$iv_utf = mb_convert_encoding($this->iv, 'UTF-8');
return mcrypt_decrypt($this->mcrypt_cipher, $this->key, base64_decode($encrypted), $this->mcrypt_mode, $iv_utf);
}
}
Теперь с PHP 7.2 mcrypt
удалено, и я ищу способ реализовать расшифровку в PHP без изменения стороны C #.
Я не очень хорош с шифрованием / дешифрованием и не смог найти правильное решение.
Можно ли реализовать эту расшифровку, используя openssl
в PHP или есть другой способ.
Спасибо.