openssl中使用base64编解码

一、使用背景

​​       最近在写一套加密接口,数字签名校验老是失败,这是因为对称加密和非对称加密后的数据是二进制的,而二进制数据在网络环境中由于途径的路由设备可能对二进制中不可见字符的处理动作不同,这样就可能会在传输中造成错误,因此需要将数据进行base64编码成可见字符。

二、base64介绍

1、概念

​       base64是一种基于64个可打印字符来表示二进制数据**的表示方法。在Base64中的可打印字符包括字母A-Za-z数字0-9,这样共有62个字符,再加上‘+’和‘/’两个字符(不同的实现会有所不同)。base64使用‘=’作为填充字符。

2、算法

​​       base64要求把每三个8Bit的字节转换为四个6Bit的字节,然后把6Bit再添两位高位0,组成四个8Bit的字节,也就是说,转换后的字符串理论上将要比原来的长1/3。 如果剩下的字符不足3个字节,则用0填充,输出字符使用’=’,因此编码后输出的文本末尾可能会出现1或2个’=’, 表示补了多少字节,解码的时候,会自动去掉。

三、openssl中base64的使用

1、编码
/*
参数:
	input:要编码的数据
	length:	input的长度
	with_new_line:	是否使用base64的默认换行功能,true:使用
返回值:
	编码后的数据
*/
unique_ptr<char[]> Base64Encode(const char* input, int length, bool with_new_line)
{
   
	//创建一个base64对象
	BIO* b64 = BIO_new(BIO_f_base64(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值