Может ли зашифрованный текст параметра запроса на получение иметь количество байтов, которое не является целым числом, кратным 16 в AES-128?

Я изучал шифрование / дешифрование и совсем недавно атаку оракула заполнения. В ходе своих исследований я наткнулся на URL-адрес, который выглядел примерно так:

HTTP:! //(некоторые URL) вещи =IfCmMrKNpduwAZW51Kz-HGcGROyJM8ul3Q3us3kzzQQe-rwWR1e7tv3pCWGkqKe7XCK5J9q0sUfv2VOt-7rlZ3meyeVtX44xib7oMV-Q6TpIfuD8FfHskAw9oY8cjM-5r2bTwy-AhsnNTKTM9GClGQOCNIQhDZruztsRfsOR65BTgWm31ZepjLayhN-I8AjB6jkoZQBJZtXNk3VyJ3Cg~~

Теперь я поместил этот зашифрованный текст в параметр stuff в счетчик символов и обнаружил, что этот зашифрованный текст состоит из 216 символов (или 216 байтов). Однако число 216 не делится на 16 (поскольку 216/16 = 13,5).

AES-128 использует 16-байтовые блоки (и да, приложение подтвердило, что данные были зашифрованы с использованием AES-128), поэтому, когда данные были зашифрованы, они должны были быть дополнены так, чтобы зашифрованный текст в конечном итоге состоял из ряда байтов, которые кратно 16. Это правильно, не так ли?

Если это так, то почему приведенный выше URL-адрес возвращает статус 200 OK, а не внутреннюю ошибку сервера 500 из-за недопустимого заполнения? Почему только когда я удаляю символ в этом зашифрованном тексте или изменяю символ, возвращается ошибка недопустимого заполнения? (Между прочим, этот URL-адрес не является настоящим URL-адресом. Я не хотел использовать фактический URL-адрес, но этот зашифрованный текст настоящий). Я что-то упустил?

0 ответов

Другие вопросы по тегам