Я реализую алгоритм шифрования AES, и мне нужно придумать способ увеличения моего iv. Я застрял на довольно простой вопрос:Установить положение байт-массива на произвольное целочисленное значение
Если у меня есть 16-байтовый, случайно сгенерированный массив, как я могу установить конкретный байт на произвольное значение?
Например, сказать, что я просто хочу arbitarily установить мой младший значащий байт 0xff:
<?php
$bytes = openssl_random_pseudo_bytes(16);
echo bin2hex($bytes) . "<br>";
$bytes[15] = 0xff; // arbitrarily set this byte
echo bin2hex($bytes) . "<br>";
?>
Это дает выход как это (явно неправильно):
9299dd089611fa47f130c4e92aaa09dc
9299dd089611fa47f130c4e92aaa0932
Я пытаюсь получить к этому выходу:
9299dd089611fa47f130c4e92aaa09ff
Я был на этом в течение нескольких часов, и я просто не могу понять это. Может ли кто-нибудь помочь? Спасибо.
EDIT: Я также попытался вывести массив так: echo var_dump(unpack('C*', $bytes));
Это дает выход как это (эти цифры не будут Перекрестная ссылка на то, что вы видите выше, но просто сосредоточиться на последнем байт):
массив (16) {[1] => int (242) [2] => int (106) [3] => int (88) [4] => int (109) [5] => int (145) [6] => int (251) [7] => int (38) [8] => int (54) [9] => int (39) [10] => int (61) [11] => int (175) [12] => int (183) [13] => int (27) [14] => int (98) [15] => int (13) [16] => int (106)}
массив (16) { [1] => int (242) [2] => int (106) [ 3] => int (88) [4] => int (109) [5] => int (145) [6] => int (251) [7] => int (38) [8] => int (54) [9] => int (39) [10] => int (61) [11] => int (175) [12] => int (183) [13] => int (27) [14] => INT (98) [15] => INT (13) [16] => INT (50)}
В случае, если не последний байт-шоу
[ 16] => int (255)
И ваш ожидаемый результат будет? – Rizier123
9299dd089611fa47f130c4e92aaa09ff – Alex
«Другая попытка» имеет синтаксическую ошибку. – Halfstop