Вопрос

Я пытаюсь декодировать строку в кодировке base64 с помощью openssl. Однако он работает только 4 раза из 5.

Декодированная строка всегда должна иметь длину 64 символа. BIO_read () всегда возвращает 64. Однако иногда возвращаемый буфер короче 64!

Есть идеи, что не так? Как я всегда могу получить правильную строку?

Это было полезно?

Решение

Вы используете str [n] cpy? Ты не можешь! Данные в кодировке Base64 могут содержать нулевые символы, которые функции обработки строки C интерпретируют как конец строки.

Используйте memcpy вместо str [n] cpy, memcmp вместо strcmp и т. д. Эти функции требуют, чтобы вы знали размер ваших данных, но я уверен, что вы действительно это знаете.

Кроме того, если вы не очень уверены в строках в стиле C и т. д., здесь можно найти много информации по этой теме.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top