我试图用openssl解码base64编码的字符串。但是,它只能工作5次,只能工作4次。Base64解码 - 不正确的字符串长度
解码的字符串应该总是64个字符长。 BIO_read()总是返回64.但是,有时返回的缓冲区比64短!
任何想法是什么错?我怎样才能得到正确的字符串?
我试图用openssl解码base64编码的字符串。但是,它只能工作5次,只能工作4次。Base64解码 - 不正确的字符串长度
解码的字符串应该总是64个字符长。 BIO_read()总是返回64.但是,有时返回的缓冲区比64短!
任何想法是什么错?我怎样才能得到正确的字符串?
你使用str [n] cpy吗?你不能! Base64编码数据可以包含空字符,C字符串处理函数将其解释为字符串结束。
使用memcpy代替str [n] cpy,memcmp代替strcmp等。这些函数需要你知道你的数据大小,但我相信你知道做知道了。
另外,如果你对C风格的字符串等不太自信,那么这里有大量关于该主题的信息。
你是什么意思的“返回的缓冲区”?您将缓冲区*传递给* BIO_read。示例代码将有所帮助。 – 2009-09-12 10:31:45
我的意思是BIO_read放入目的地。 无论如何,我追踪我的问题到单个字符。它看起来像有时BIO_read返回与终止相同的字符。并杀死字符串... – Mantas 2009-09-12 10:42:18