Qt&openssl之base64编解码

在QByteArray中

  • 在QByteArray中
  QByteArray QByteArray::toBase64() const

  QByteArray QByteArray::fromBase64(const QByteArray &base64)

openssl对base64操作

base64编码 ->bio链的写操作

char* data = "hello,world";
// 创建base64编码的bio对象
BIO* b64 = BIO_new(BIO_f_base64());
// 最终在内存中得到一个base64编码之后的字符串
BIO* mem = BIO_new(BIO_s_mem());
// 将两个bio对象串联,结构:b64->mem
BIO_push(b64,mem);
// 将要编码的数据写入到bio对象中
BIO_write(b64,data,strlen(data)+1);
// 将数据从bio对象对应的内存中取出->char*
BUF_MEM* ptr;
// 数据通过ptr指针传出
long BIO_get_mem_ptr(b64,&ptr);
char* buf = new char[ptr->length];
memcpy(buf,ptr->data,ptr->length);
printf("编码之后的数据:%s\n",buf);

base64解码 ->bio链的读操作

// 要解码的数据
char* data="xxxxxxxxx";
// 创建base64解码的bio对象
BIO* b64 = BIO_new(BIO_f_base64());

#if 0
// 存储要解码的数据
BIO* mem = BIO_new(BIO_s_mem());
// 将数据写到mem对应的内存中
BIO_write(mem,data,strlen(data));
#else
BIO* mem=BIO_new_mem_buf(data,strlen(data));
#endif
// 组织bio链
BIO_push(b64,mem);
// 读数据
char buf[1024];
int BIO_read(b64,buf,1024);
printf("base64解码的数据:%s\n",buf);

posted on 2021-06-01 16:24  lodger47  阅读(222)  评论(0)    收藏  举报

导航