OPENSSL Base64编码和解码
来源:互联网 发布:网络启动设置 编辑:程序博客网 时间:2024/06/03 15:58
BOOL Base64Encode(unsigned char *pData, int nLeng, int linebreaks, char * pOutBufffer, int *pBufferLenth)
{
int res = FALSE;
BIO *bmem, *b64;
BUF_MEM *bptr;
b64 = BIO_new(BIO_f_base64());
if (!b64) return res;
if (!linebreaks)
{
BIO_set_flags(b64, BIO_FLAGS_BASE64_NO_NL);
}
bmem = BIO_new(BIO_s_mem());
if (bmem) {
b64 = BIO_push(b64, bmem);
if (BIO_write(b64, pData, nLeng)==nLeng)
{
(void)BIO_flush(b64);
BIO_get_mem_ptr(b64, &bptr);
if (*pBufferLenth > bptr->length)
{
memcpy(pOutBufffer, bptr->data, bptr->length);
pOutBufffer[bptr->length] = 0;
res = TRUE;
}
*pBufferLenth = bptr->length + 1;
}
}
BIO_free_all(b64);
return res;
}
BOOL Base64Decode(char *pData, int nLeng, int linebreaks, unsigned char * pOutBufffer, int *pBufferLenth)
{
int res = FALSE;
BIO *bmem;
BIO *b64;
if (nLeng == 0)
nLeng = strlen(pData);
int nMaxLen=(nLeng*6+7)/8;
int nMiniLen;
unsigned char *buf = new unsigned char[nMaxLen];
if (buf)
{
b64 = BIO_new(BIO_f_base64());
if (b64)
{
if (!linebreaks)
{
BIO_set_flags(b64, BIO_FLAGS_BASE64_NO_NL);
}
bmem = BIO_new_mem_buf((char*)pData, nLeng);
b64 = BIO_push(b64, bmem);
nMiniLen = BIO_read(b64, buf, nMaxLen);
if(*pBufferLenth >= nMiniLen)
{
memcpy(pOutBufffer, buf, nMiniLen);
res = TRUE;
}
*pBufferLenth = nMiniLen;
BIO_free_all(b64);
}
delete []buf;
}
return res;
}
- OPENSSL Base64编码和解码
- OpenSSL Base64编码与解码
- OpenSSL 使用 base64 编码/解码
- base64编码和解码
- BASE64编码和解码
- base64编码和解码
- base64编码和解码
- BASE64 编码和解码
- Base64编码和解码
- BASE64编码和解码
- base64编码和解码
- BASE64编码和解码
- Base64编码和解码
- BASE64编码和解码
- base64编码和解码
- BASE64编码和解码
- BASE64编码和解码 .
- base64编码和解码
- 【复习】SQL 内,外,左,右连接
- Maven最佳实践:版本管理
- 【李开复】选择的智慧(六)
- Ruby on Rails安装与配置
- IIS上配置多个网站
- OPENSSL Base64编码和解码
- WPF制作子窗体的弹出动画效果
- 【李开复】21世纪最需要的7种人才(七)
- heritrix1.12.1不用eclipse的配置
- background-position
- oracle rownum分页 出现重复数据
- 8.1.4 等待进程结束
- 磁盘存储器存储总量、寻道时间、等待时间、数据传输速率等计算公司
- 【李开复】给家长的一封信(八)