Шифрование AES 128

На работе меня попросили выполнить запрос на простой веб-сервис со следующими инструкциями:

AES-шифрование:
Тип: ЕЦБ
Размер: 128 бит
Режим заполнения: PKCS7
ключ: 9b6018215942b2e1da3797d3394779bf

В документации (только данный пример) они говорят, что для строки:

2874838-49

Процесс шифрования должен генерировать:

BEE361962A1802A7BA2AD328DAE8B291

Я много искал что-то подобное, но ни одно из решений (например, Вот, Вот Вот, и т. д.) данное помогло мне в достижении приведенного примера.

Это было последнее, что я попробовал сейчас:

function aes128Encrypt($data, $key) {
$padding = 32 - (strlen($data) % 32);
$data .= str_repeat(chr($padding), $padding);
return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $data, MCRYPT_MODE_ECB));
}
$data = "2874838-49";
$key = "9b6018215942b2e1da3797d3394779bf";
echo aes128Encrypt($data, $key); // UdP7dXSTp6b5I986PLL8Gs3qH3rMj0SpQ0te4pP7M44=

1

Решение

Алгоритм кодирования возвращает вам поток байтов закодированных данных.

В примере, который вы имеете, не представлен вариант данных в кодировке base64, а есть шестнадцатеричное представление.

В вашем случае просто поменяйте base64_encode за bin2hex и ответ должен совпадать.

function aes128Encrypt($data, $key) {
$padding = 32 - (strlen($data) % 32);
$data .= str_repeat(chr($padding), $padding);
return bin2hex(mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $data, MCRYPT_MODE_ECB));
}
$data = "2874838-49";
$key = "keyshouldbeplacedhere";
echo aes128Encrypt($data, $key);
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]