openssl可以直接使用命令对文件件进行base64的编码与解码,利用openssl提供的API同样可以做到这一点。

废话不多说,直接上代码了。需要注意的是通过base64编码后的字符每64个字节都会有一个换行符的存在。

 1 static int base64_encode(char *str,int str_len,char *encode,int encode_len){
2 BIO *bmem,*b64;
3 BUF_MEM *bptr;
4 b64=BIO_new(BIO_f_base64());
5 bmem=BIO_new(BIO_s_mem());
6 b64=BIO_push(b64,bmem);
7 BIO_write(b64,str,str_len); //encode
8 BIO_flush(b64);
9 BIO_get_mem_ptr(b64,&bptr);
10 if(bptr->length>encode_len){
11 DPRINTF("encode_len too small\n");
12 return -1;
13 }
14 encode_len=bptr->length;
15 memcpy(encode,bptr->data,bptr->length);
16 // write(1,encode,bptr->length);
17 BIO_free_all(b64);
18 return encode_len;
19 }
20
21 static int base64_decode(char *str,int str_len,char *decode,int decode_buffer_len){
22 int len=0;
23 BIO *b64,*bmem;
24 b64=BIO_new(BIO_f_base64());
25 bmem=BIO_new_mem_buf(str,str_len);
26 bmem=BIO_push(b64,bmem);
27 len=BIO_read(bmem,decode,str_len);
28 decode[len]=0;
29 BIO_free_all(bmem);
30 return 0;
31 }

利用openssl进行base64的编码与解码的更多相关文章

  1. 利用openssl进行BASE64编码解码、md5/sha1摘要、AES/DES3加密解密

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

  2. 在LoadRunner中进行Base64的编码和解码

    <Base64 Encode/Decode for LoadRunner>这篇文章介绍了如何在LoadRunner中对字符串进行Base64的编码和解码: http://ptfrontli ...

  3. javascript中的Base64.UTF8编码与解码详解

    javascript中的Base64.UTF8编码与解码详解 本文给大家介绍的是javascript中的Base64.UTF8编码与解码的函数源码分享以及使用范例,十分实用,推荐给小伙伴们,希望大家能 ...

  4. 利用window对象自带atob和btoa方法进行base64的编码和解码

    项目中一般需要将表单中的数据进行编码之后再进行传输到服务器,这个时候就需要base64编码 现在可以使用window自带的方法window.atob() 和  window.btoa()  方法进行 ...

  5. [Swift]扩展String类:Base64的编码和解码

    扩展方式1: extension String { //Base64编码 func encodBase64() -> String? { if let data = self.data(usin ...

  6. coding++:js实现基于Base64的编码及解码

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. Java如何进行Base64的编码(Encode)与解码(Decode)?

    https://blog.csdn.net/zhou_kapenter/article/details/62890262 *************************************** ...

  8. python中base64编码与解码

    在python3中用base64进行编码和解码的时候特别注意: 题目要求: 准备一张.jpg图片,比如:mm.jpg,读取图片数据并通过b85encode加密之后写入到新文件mm.txt文件中,然后读 ...

  9. 详解Base64编码和解码

    Base64是最常用的编码之一,比如开发中用于传递参数.现代浏览器中的<img />标签直接通过Base64字符串来渲染图片以及用于邮件中等等.Base64编码在RFC2045中定义,它被 ...

随机推荐

  1. 配置mysql主从服务器

    参考:https://www.linuxidc.com/Linux/2016-09/135633.htm 一.Master主服务器配置(192.168.1.3) 1.编辑my.cnf(命令查找文件位置 ...

  2. hdu5340 Three Palindromes(manacher算法)

    题目描写叙述: 推断能否将字符串S分成三段非空回文串. 解题思路: 源码: #include <cstdio> #include <algorithm> #define MAX ...

  3. C#除法精度

    string.empty()NULL 首先要安装虚拟机工具VMWare Tool这样鼠标进出使用也方便. 1.虚拟机和主机之间在安装了VMWare Tool之后可以实现剪贴板的共享,即可以复制粘贴.但 ...

  4. DateTime操作,时间范围,加减

    DB里边存的是char类型数组的时间,例如20151111 12171220000,现在需要把这个时间加减5s,组成 一个时间范围 然后再写存储过程. 想到的办法就是把这个时间先转换成DateTime ...

  5. 使用 Kingfisher 处理网络图片的读取与缓存

    Kingfisher 是一个读取网络图片和处理本地缓存的开源库,由 onevcat 开发.提到图片缓存库,那么熟悉 Objective-C 开发的同学,可能会想起 SDWebImage. 没错,Kin ...

  6. 自己动手写CPU之第七阶段(5)——流水线暂停机制的设计与实现

    将陆续上传本人写的新书<自己动手写CPU>,今天是第28篇.我尽量每周四篇 China-pub的预售地址例如以下(有文件夹.内容简单介绍.前言): http://product.china ...

  7. Ubuntu16.04下屏幕侧边栏的设置

    ubnutu的任务栏都是在左侧: zhang@zhang-virtual-machine:~$ gsettings set com.canonical.Unity.Launcher launcher- ...

  8. Django-extra的用法

    ## select提供简单数据 # SELECT age, (age > 18) as is_adult FROM myapp_person; Person.objects.all().extr ...

  9. kubernetes调度之资源耗尽处理配置

    系列目录 本篇将介绍如何使用kubelet处理资源耗尽的情况 当可用的计算机资源非常低的时候,kubelet仍然要保证节点的稳定性.当处理不可压缩的计算机资源(比如内存或磁盘空间)时,这尤其重要,当这 ...

  10. c结构体里的数组与指针

    /* 訪问成员数组名事实上得到的是数组的相对地址.而訪问成员指针事实上是相对地址里的内容 */ struct buf_str { int length; char buf[0]; }; struct ...