当前位置: 首页 > news >正文

openssl数据压缩

介绍

数据压缩是将原有数据通过某种压缩算法计算得到相对数据量小的过程。这种过程是可逆的,即能通过压缩后的数据恢复出原数据。数据压缩能够节省存储空间,减轻网络负载。

在即需要加密又需要压缩的情况下,必须先压缩再加密,次序不能颠倒。因为加密后的数据是一个无序的数据,对它进行数据压缩,效果不大。

SSL协议本身支持压缩算法,Openssl实现也支持压缩算法。它实现了一个空的压缩算法(crypto/comp/c_rle.c)并支持zlib压缩算法(crypto/comp/ c_zlib.c)。openssl中用户可实现自己的压缩算法。

当openssl在有zlib库的平台下安装时,需要有zlib 或者zlib-dynamic选项。比如:

./config zlib./config zlib-dynamic

函数说明

  1. COMP_rle

返回openssl实现的空压缩算法,返回值为一个COMP_METHOD。

  1. COMP_zlib

返回基于zlib库的COMP_METHOD。

  1. COMP_CTX_new

初始化上下文,输入参数为COMP_METHOD。

  1. COMP_compress_block

压缩计算。

  1. COMP_expand_block

解压计算。

openssl中压缩算法协商

Openssl中的压缩算法的协商与加密套件一样,都是由客户端在client hello消息中指定一个算法列表,而由服务端决定选取其中的一种,并通过server hello消息来通知客户端。

编程示例

#include <string.h>#include <openssl/comp.h>int    main(){COMP_CTX          *ctx;int                  len,olen=100,ilen=50,i,total=0;unsigned charin[50],out[100];unsigned charexpend[200];#ifdef      _WIN32ctx=COMP_CTX_new(COMP_rle());#else/* for linux */ctx=COMP_CTX_new(COMP_zlib());#endiffor(i=0;i<50;i++)memset(&in[i],i,1);total=COMP_compress_block(ctx,out,olen,in,50);len=COMP_expand_block(ctx,expend,200,out,total);COMP_CTX_free(ctx);return 0;}
http://www.lryc.cn/news/263991.html

相关文章:

  • SQLturning:定位连续值范围起点和终点
  • 饥荒Mod 开发(十七):手动保存和加载,无限重生
  • Skywalking系列之最新版9.2.0-JavaAgent本地构建
  • olap/clickhouse-编译器优化与向量化
  • RK3399平台开发系列讲解(内核入门篇)网络协议的分层
  • Idea远程debugger调试
  • MATLAB - Gazebo 仿真环境
  • selenium自动化webdriver下载及安装
  • 网络基础介绍
  • Java中四种引用类型(强、软、弱、虚)
  • 【MyBatis学习笔记】MyBatis基础学习
  • 还在为论文焦虑?免费AI写作大师帮你搞定
  • 3.10【窗口】窗口使用示例(窗口缩放 三)
  • 【机器学习】密度聚类:从底层手写实现DBSCAN
  • 2023-12-20 二叉搜索树的最近公共祖先和二叉搜索树中的插入操作和删除二叉搜索树中的节点
  • pytorch文本分类(三)模型框架(DNNtextCNN)
  • <长篇文章!!>数据结构与算法的重要知识点与概要总结 ( •̀ ω •́ )✧✧临近考试和查漏补缺的小伙伴看这一篇就都懂啦~
  • 【安全】audispd调研
  • WINDOWS(WIN11)通过IP添加网络打印机
  • 华为数通试题
  • Labview Vision 机器视觉使用,从下载程序安装应用,到实战找硬币并输出值
  • 【delphi11】delphi基础探索【三、基础组件和事件】
  • react hooks浅谈
  • stable diffusion webui之lora调用
  • FormData文件上传多文件上传
  • 八股文打卡day4——计算机网络(4)
  • TensorFlow(2):Windows安装TensorFlow
  • 一文解决idea导入源码控制台爆红问题
  • 排序算法——快排
  • 第二节TypeScript 基础语法