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);
浙公网安备 33010602011771号