Получить байтовый массив из openssl_encrypt PHP 7.0 - PullRequest
0 голосов
/ 19 июня 2019

Я использую следующий код C # для шифрования байтового массива:

public static byte[] AES256_Encrypt(byte[] input, byte[] key)
    {
        var aesAlg = new AesManaged
        {
            KeySize = 256,
            Key = key,
            BlockSize = 128,
            Mode = CipherMode.ECB,
            Padding = PaddingMode.Zeros,
            IV = new byte[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
        };

        ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);
        return encryptor.TransformFinalBlock(input, 0, input.Length);
    }

Входные байты: 8F 21 FF 43 49 27

Закрытый ключ: C8 AE 1D EC D8 25 8D 52 6F 56 FB 13 F1 5D 3C 84 E0 02 16 89 34 8F 32 87 10 0A B6 CD 81 27 DE 7E

Выход: F1 00 ED B4 25 8F A6 D5 13 32 4A 8E DE 87 0C 3F

Теперь я хочу вычислить то же самое в PHP:

$plaintext = chr(0x8F). chr(0x21). chr(0xFF). chr(0x43). chr(0x49). chr(0x27);

$method = 'aes-256-ecb';

$key = chr(0xc8). chr(0xae ). chr(0x1d ). chr(0xec ). chr(0xd8 ). chr(0x25 ). chr(0x8d ). chr(0x52 ). chr(0x6f ). chr(0x56 ). chr(0xfb ). chr(0x13 ). chr(0xf1 ). chr(0x5d ). chr(0x3c ). chr(0x84
). chr(0xe0 ). chr(0x02 ). chr(0x16 ). chr(0x89 ). chr(0x34 ). chr(0x8f ). chr(0x32 ). chr(0x87 ). chr(0x10 ). chr(0x0a ). chr(0xb6 ). chr(0xcd ). chr(0x81 ). chr(0x27 ). chr(0xde ). chr(0x7e);

$encrypted = base64_encode(openssl_encrypt($plaintext, $method, $key, OPENSSL_RAW_DATA));

Вывод будет: y2ipJIV4m96LKDu7jI + Mrg == (который не является моим шестнадцатеричным значением, когда я преобразую его из ASCII в шестнадцатеричный)

Что мне нужно, чтобы вернуть байтовый массив?

...