Rijndael 256 Шифрование / дешифрование между C # и PHP 7.2+ - PullRequest
0 голосов
/ 13 января 2019

Я уже реализовал шифрование 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 или есть другой способ. Спасибо.

...