Pregunta

Estoy tratando de decodificar una cadena codificada en base64 con openssl. Sin embargo, solo funciona 4 de 5 veces.

La cadena decodificada siempre debe tener 64 caracteres de longitud. BIO_read () siempre devuelve 64. Sin embargo, a veces el búfer devuelto es más corto que 64!

¿Alguna idea de lo que está mal? ¿Cómo puedo obtener siempre la cadena correcta?

¿Fue útil?

Solución

¿Estás usando str [n] cpy? No puedes! Los datos codificados en Base64 pueden contener caracteres nulos, que las funciones de procesamiento de la cadena C interpretan como el final de la cadena.

Use memcpy en lugar de str [n] cpy, memcmp en lugar de strcmp, etc. Estas funciones requieren que conozca el tamaño de sus datos, pero creo que lo lo sabe.

Además, si no está muy seguro de las cadenas de estilo C y demás, hay mucha información sobre el tema aquí.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top