Я использую следующий код 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 в шестнадцатеричный)
Что мне нужно, чтобы вернуть байтовый массив?