简单的base64解码不起作用:(
|
我一直在尝试使用以下代码对base *输入char *进行base64解码。
\“ msg \”的值似乎是一个空字符串:(
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <openssl/bn.h>
#include <openssl/bio.h>
#include <openssl/objects.h>
#include <openssl/pem.h>
#include <openssl/objects.h>
// reads b64 encoded msg (pReadBuffer) and writes to pWriiteFile.
char * dgstdecode(char *pReadBuffer, int pLength)
{
char *msg = (char *)malloc(pLength);
memset(msg, 0x00, pLength);
int readbytes = -1;
printf(\"inside dgstdecode\\n\");
printf(\"\\n pReadBuffer = %s \\n\", pReadBuffer);
BIO *b64, *bio = NULL;
b64 = BIO_new(BIO_f_base64());
bio = BIO_new_mem_buf(pReadBuffer, pLength);
bio = BIO_push(b64, bio);
//BIO_set_flags(bio,BIO_FLAGS_BASE64_NO_NL);
while ((readbytes = BIO_read(bio, msg, pLength)) > 0)
{
printf(\"readbytes: %d\\n\", readbytes);
printf(\"inside dgstdecode\\n\");
}
BIO_flush(bio);
printf(\"msg = %s\\n\", msg);
BIO_free_all(bio);
//BIO_free_all(b64);
return msg;
}
int main(int argc, char *argv[])
{
int i = 0;
char buff [9] =\"aGVsbG8K\" ;
//memset(buff, 0, 9);
char* ptr ;
ptr = (char*)malloc(9);
for(i =0;i < 4; i++){
buff[9] = \'\\0\';
printf(\"strlen buff = %d\\n\", strlen(buff));
ptr = dgstdecode(buff, 9);
printf(\"ptr = %s\\n\", ptr);
}
return 0;
}
没有找到相关结果
已邀请:
1 个回复
疾很毋悲
我的输出现在是(仍在删除/ n东西): 迷迷状态= 9 内部dgstdecode pReadBuffer = aGVsbG8K 读取字节数:6 内部dgstdecode msg =你好 ptr =你好 迷迷状态= 9 内部dgstdecode pReadBuffer = aGVsbG8K 读取字节数:6 内部dgstdecode msg =你好 ptr =你好 迷迷状态= 9 内部dgstdecode pReadBuffer = aGVsbG8K 读取字节数:6 内部dgstdecode msg =你好 ptr =你好 迷迷状态= 9 内部dgstdecode pReadBuffer = aGVsbG8K 读取字节数:6 内部dgstdecode msg =你好 ptr =你好 忽略我的原始回复如下:
线似乎是罪魁祸首。它似乎覆盖了参考。这是我注释掉该行后的输出(编辑器似乎删除了一些/ n \):