Декодирование Base64 - неверная длина строки - PullRequest
0 голосов
/ 12 сентября 2009

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

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

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

1 Ответ

4 голосов
/ 12 сентября 2009

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

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

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

...