Передача метода расшифровки Rijndael PHP? - PullRequest
0 голосов
/ 18 марта 2020

Я нашел следующий метод для Inte rnet, который я использую для расшифровки.

public static string DecryptString(string cipherText, string passPhrase, string initVector)
    {
        byte[] initVectorBytes = Encoding.UTF8.GetBytes(initVector);
        byte[] cipherTextBytes = Convert.FromBase64String(cipherText);
        PasswordDeriveBytes password = new PasswordDeriveBytes(passPhrase, null);
        byte[] keyBytes = password.GetBytes(keysize / 8);
        RijndaelManaged symmetricKey = new RijndaelManaged();
        symmetricKey.Mode = CipherMode.CBC;
        symmetricKey.Padding = PaddingMode.PKCS7;
        ICryptoTransform decryptor = symmetricKey.CreateDecryptor(keyBytes, initVectorBytes);
        MemoryStream memoryStream = new MemoryStream(cipherTextBytes);
        CryptoStream cryptoStream = new CryptoStream(memoryStream, decryptor, CryptoStreamMode.Read);
        byte[] plainTextBytes = new byte[cipherTextBytes.Length];
        int decryptedByteCount = cryptoStream.Read(plainTextBytes, 0, plainTextBytes.Length);
        memoryStream.Close();
        cryptoStream.Close();
        return Encoding.UTF8.GetString(plainTextBytes, 0, decryptedByteCount);
    }

Итак, этот метод получает зашифрованный текст, пароль и IV (в виде 16 символов) длинная строка). Например: Пароль: test IV: hCIoZVI5lrtCgdNo Зашифрованное сообщение: SeQUquUrE8W3rUqvYQe6oA ==

С помощью вышеупомянутого метода я могу успешно расшифровать сообщение (результат должен быть "test").

Теперь я попытался использовать openssl_decrypt () в PHP, чтобы также иметь возможность расшифровывать зашифрованные сообщения в PHP. Но это не работает. Я использовал это:

$encrypted = "SeQUquUrE8W3rUqvYQe6oA==";
$password = "test";
$iv = "hCIoZVI5lrtCgdNo";
echo openssl_decrypt($encrypted, 'aes-256-cbc', $password, 0, $iv);

Но это не работает? Вы можете помочь мне? Спасибо!

...