base64
来源:互联网 发布:mac磁盘分区失败 编辑:程序博客网 时间:2024/06/06 01:41
基于:openssl-1.0.1g
int openssl_base64_encode(const uint8_t *in, uint32_t in_len, uint8_t *out, uint32_t *out_len){ int ret = 0; BIO * bmem = NULL; BIO * b64 = NULL; BUF_MEM * bptr = NULL; if ((NULL == in) || (NULL == out) || (NULL == out_len) || (0 == in_len)) { printf("%s-%d:input paraments error!\n", __FUNCTION__, __LINE__); return -1; } b64 = BIO_new(BIO_f_base64()); bmem = BIO_new(BIO_s_mem()); b64 = BIO_push(b64, bmem); // if no set, each 64 bytes will add '\n', the end of string will add '\n' too. this will result base64 cannot decode. BIO_set_flags(b64, BIO_FLAGS_BASE64_NO_NL); BIO_write(b64, in, in_len); ret = BIO_flush(b64); if (0 != ret) { /*remove Warming Error*/ } BIO_get_mem_ptr(b64, &bptr); /* if (bptr->length > *out_len) { printf("encode length too small!\n"); return -1; } */ *out_len = bptr->length; memcpy(out, bptr->data, bptr->length); BIO_free_all(b64); return 0;}int openssl_base64_decode(const uint8_t *in, uint32_t in_len, uint8_t *out, uint32_t *out_len){ BIO * bmem = NULL; BIO * b64 = NULL; if ((NULL == in) || (NULL == out) || (NULL == out_len) || (0 == in_len)) { printf("%s-%d:input paraments error!\n", __FUNCTION__, __LINE__); return -1; } b64 = BIO_new(BIO_f_base64()); BIO_set_flags(b64, BIO_FLAGS_BASE64_NO_NL); bmem = BIO_new_mem_buf((void *)in, in_len); bmem = BIO_push(b64, bmem); *out_len = BIO_read(bmem, out, in_len); out[*out_len] = 0; BIO_free_all(b64); return 0;}
阅读全文
0 0
- base64
- BASE64
- Base64
- BASE64
- Base64
- Base64
- base64
- base64
- base64
- base64
- base64
- Base64
- base64
- base64
- Base64
- BASE64
- Base64
- Base64
- Excel 技巧百例:数值的阶梯性计算
- hdu 2017 字符串统计
- Ajax请求传递数组参数的两种方法
- hdu2026 首字母变大写(C语言)
- Metaspolit下如何使用Nessus
- base64
- JTable中某一行的值传到新的窗口中的对应文本框
- 2017 Multi-University Training Contest
- JFinal及Jetty环境的搭建
- 抽象类+接口+内部类(有点晕 写的自己都感觉不太对)
- HDU6040-Hints of sd0061(STL)
- 自用基础8-面向对象3
- java面试题——编程题:彩色瓷砖
- hihoCoder 1523 : 数组重排2