У меня проблема с AES-шифрованием, и клиент показал мне свой код сервера PHP для «дешифрования». Любопытно, что точный код был взят из S.O. (неудивительно). Я нашел это, потому что код, который прошел у меня, имел тот же самый комментарий! :)Как перенести эту строку PHP на Java?
В любом случае, это фрагмент кода PHP, взятый из this S.O. вопрос.
Я пытаюсь сделать то же самое с Java, но я не знаю, что это точная линия добавляет:
$key = 'a16byteslongkey!';
$padded_key = $key . str_repeat(chr(0x00), 16); // Argh!
(! Обратите внимание на комментарий // Argh был не мой;)
Он пытается добавить chr (0x00), чтобы сделать 32-байтный ключ (потому что ключ $ равен 16?), Если да, как бы я сделал то же самое в Java?
@ Джош, может быть, мне следовало бы уточнить: что такое chr (0x00) в php? –
В PHP строки являются двоично-безопасными (каждый «символ» в строке на самом деле является просто байтом), но экземпляры Java «String» не являются (они фактически представляют символы, а не байты). Для двоичных ключей шифрования вы, вероятно, не должны использовать объекты 'String', а скорее' byte [] 'или что-то вроде класса Key. –
@ Другой код Действительно, спасибо за разъяснение. Оказывается, клиент делает «взломанную» вещь на стороне сервера, заполняя ключ 16 байтов с 16 нулями, поэтому он добавляет 32 ... после заполнения фиксированного ключа 16 «нулями» все это сработало. ;) –