16.openssl编程——数据压缩

16.1 简介
数据压缩是将原有数据通过某种压缩算法计算得到相对数据量小的过程。这种过程是可逆的,即能通过压缩后的数据恢复出原数据。数据压缩能够节省存储空间,减轻网络负载。
在即需要加密又需要压缩的情况下,必须先压缩在加密,次序不能颠倒。
 
 
16.2 数据结构
openssl通过函数地址来抽象数据压缩
a.COMP_METHOD
该数据结构定义了具体压缩/解压函数,这些函数可由用户自己实现
 
struct comp_method_st {
int type; 压缩算法的nid
const char *name; 压缩算法的名字
int (*init) (COMP_CTX *ctx); 初始化函数
void (*finish) (COMP_CTX *ctx); 结束操作
int (*compress) (COMP_CTX * ctx,
unsigned char *out, unsigned int olen,
unsigned char *in, unsigned int ilen); 具体压缩算法,本函数必须实现
int (*expand) (COMP_CTX *ctx,
unsigned char *out, unsigned int olen,
unsigned char *in, unsigned int ilen); 具体的解压算法,本函数必须实现
}
 
b.该结构用于存放压缩/解压中的上下文数据,主要供crypto/comp/comp_lib.c使用
struct comp_ctx_st {
struct comp_method_st *meth;COMP_METHOD结构,一个comp_ctx通过它指明了一种具体的压缩算法
unsigned long compress_in;被压缩数据总字节数
unsigned long compress_out;压缩数据总字节数
unsigned long expand_in;被解压数据总字节数
unsigned long expand_out;解压说及总字节数
void *data;供用户使用的扩展数据,用于存放用户自定义的信息。
}
 
16.3 函数说明
a.COMP_rle
功能:返回openssl实现的空压缩算法,返回值为一个COMP_METHOD.
b.COMP_zlib
功能:返回基于zlib库的COMP_METHOD
c.COMP_CTX_new
功能:初始化上下文,输入参数为COMP_METHOD.
d.COMP_compress_block
功能:压缩就算
e.COMP_expand_block
功能:解压计算
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值