Как я могу перенести эту строку PHP на Java? - PullRequest
1 голос
/ 21 марта 2012

У меня проблема с шифрованием AES, и клиент показал мне свой код PHP-сервера для «расшифровки».Любопытно, что точный код был взят из SO (не удивительно).Я узнал об этом, потому что код, который передал мне клиент, имел точно такой же комментарий!:)

Во всяком случае, это фрагмент кода PHP, взятый из этого ТАКОГО вопроса.

Я пытаюсь сделать то же самое с Java, но я не знаю, чтоэта точная строка добавляет:

$key = 'a16byteslongkey!';

$padded_key = $key . str_repeat(chr(0x00), 16); // Argh!

(обратите внимание, что комментарий // Argh! не был моим;)

Он пытается добавить chr (0x00), чтобы получить ключ длиной 32 байта (потому что ключ $ равен 16?) если так, как бы я сделал то же самое в Java?

Ответы [ 2 ]

2 голосов
/ 21 марта 2012

Как сказал Гарет, это возвращает символ с кодом ASCII 0. Используя это, мы можем создать функцию, которая повторяет строку:

public static String strRepeat(String toRepeat, int reps){
    //Sanity checks go here!
    StringBuilder sb = new StringBuilder();
    for(int x = 0; x < reps; x++){
        sb.append(toRepeat);
    }
    return sb.toString();
}

Теперь строку можно заменить на:

String paddedKey = key + strRepeat('\0', 16); // Argh!
1 голос
/ 21 марта 2012

chr(0x00) должен возвращать символ с кодом ASCII 0, который, я думаю, может быть представлен '\0' в Java.

...