Можно ли удалить новую строку в кодировке Base64?

В моем приложении java используется кодировка base64, которая помещает новую строку (\n) после каждых 76 символов. Мне нужно поместить эту закодированную строку в файл свойств, а новая строка нарушает функциональность.

Когда я делаю encodedString.replaceAll("\n", "");, все работает нормально, но я просто хочу убедиться, что это ожидается, и я не представляю скрытую проблему.

Ответ 1

Для многих старых программ, которые не могли обрабатывать длинные строки, потребовалась ломаная строка с кодировкой base64 в несколько строк. Программы, написанные на Java, обычно могут обрабатывать длинные строки, так как им не нужно самостоятельно управлять памятью. Пока ваши строки короче 64 миллионов символов, проблем не должно быть.

И поскольку вам не нужны строки новой строки, вы не должны генерировать их вообще, если это возможно.

Ответ 2

Некоторые из кодировщиков Base64 добавляют к закодированным строкам символы EOL, такие как CRLF ('\ r\n'). Вы можете использовать Base64.encodeBase64URLSafe, чтобы избавиться от них:

Кодирует двоичные данные, используя алгоритм base64, безопасный для URL, но не вырезает вывод. Исправляемая по умолчанию переменная испускает - и _ вместо символов + и /. Примечание: добавление дополнений не добавляется.

Ответ 3

Это не должно быть проблемой, поскольку многие декодеры могут декодировать закодированный текст без разделителя новой строки. Самый безопасный вариант - сделать декодирование самостоятельно и проверить его.