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
功能:解压计算
posted @ 2018-01-19 12:47  艾小小雨  阅读(779)  评论(0编辑  收藏  举报