Я пытаюсь написать модульный тест, чтобы проверить, правильно ли я хеширую и кодирую строку (фактически, сертификат PEM).
Что я делаю, это:
- Получение сертификата (в формате PEM)
- Конвертировать в DER
- Запустить функцию хеширования для получения хэшированного значения (SHA-1 / SHA-256)
- Base64Url, кодирующий хэш
Значение хэша SHA-256 имеет постоянную длину (256 бит). Это может быть представлено по-разному (шестнадцатеричный / двоичный и т. Д.), Но это то же самое внизу. Я сохраняю значение в байтовом массиве Java.
У меня такой вопрос: если я пытаюсь закодировать в base64url это значение массива хешированных байтов, всегда ли длина результирующей кодированной строки будет одинаковой? Или это будет варьироваться в зависимости от значений, присутствующих в базовом хеше?
Что мне неясно, так это часть «url» кодировки «base64url»: поскольку она делает строку безопасной для URL, выполняет ли она какое-либо расширение символа (например, urlencoding заменяет один символ пробела) с% 20, что составляет три символа).