(转)OPENSSL之BIO操作

OPENSSL之BIO操作 (转)

最近一直在研究OPENSSL的API函数库,前几天一直研究ASN1编码,从昨天下午开始学习了BIO的操作,感觉这个BIO就是对普通的一些I/O操作进行了封装,当然,不仅仅是简单的封装,还涉及到很多的。它主要包含两个类型,一个是filter类型,一个是source/sink类型,个人认为filter类型是进行相应的操作,譬如加密,编码;而source/sink类型主要是进行文件的写入,读取,也就是IO操作。所以在ctrl上面,只有后者才具有相应的操作。同时,我在编写相应的测试程序的时候发现了一些问题,现总结如下,我编写了一个BIO操作链表,目的是对输入的字符进行base64编码,代码如下:

 

#include <stdio.h>
//#include <openssl/bio.h>
//#include <openssl/rsa.h>
#include <openssl/pem.h>

int main(int argc, char *argv[])
{
	BIO* bio=NULL;
	BIO* biofile=NULL;
	char* readstr=NULL;
	char mydata[]= "this is my test"; //要进行编码的字符
	bio=BIO_new(BIO_f_base64());//filter类型,对输入的信息进行base64编码
	// biofile=BIO_new_fp(stdout,BIO_NOCLOSE);//我的另外一个测试,输出到屏幕,标准的输入输出
	biofile=BIO_new(BIO_s_file());//定义的一个文件输出
	BIO_write_filename(biofile,"123.txt");//输出的目的
	if(bio)
	{
	    BIO_push(bio,biofile);//开始连接两个BIO
	    BIO_write(bio,mydata,sizeof(mydata));//向连接完毕的BIO写入数据
	    BIO_flush(bio);//这个很重要,如果没有这个,就无法把信息写到文件或者打印到计算机屏幕上,作用是把BIO内部的数据读出来
	}
	BIO_vfree(bio);//释放
	// BIO_free(bio);
	// BIO_free(biofile);
	printf("ok\n");
	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值