Декодирование Base64 - неверная длина строки
Вопрос
Я пытаюсь декодировать строку в кодировке base64 с помощью openssl. Однако он работает только 4 раза из 5.
Декодированная строка всегда должна иметь длину 64 символа. BIO_read () всегда возвращает 64. Однако иногда возвращаемый буфер короче 64!
Есть идеи, что не так? Как я всегда могу получить правильную строку?
Решение
Вы используете str [n] cpy? Ты не можешь! Данные в кодировке Base64 могут содержать нулевые символы, которые функции обработки строки C интерпретируют как конец строки.
Используйте memcpy вместо str [n] cpy, memcmp вместо strcmp и т. д. Эти функции требуют, чтобы вы знали размер ваших данных, но я уверен, что вы действительно это знаете.
Кроме того, если вы не очень уверены в строках в стиле C и т. д., здесь можно найти много информации по этой теме.