文件名称:数据结构-树莓派4b+opencv4+python 打开摄像头的实现方法
文件大小:2.26MB
文件格式:PDF
更新时间:2024-06-22 11:26:04
opensll 加密 解密 数据安全 网络安全
3.1 openssl堆栈 堆栈是一种先进后出的数据结构。openssl 大量采用堆栈来存放数据。它实现了一 个通用的堆栈,可以方便的存储任意数据。它实现了许多基本的堆栈操作,主要有:堆 栈拷贝(sk_dup)、构建新堆栈(sk_new_null,sk_new)、插入数据(sk_insert)、删除数 据(sk_delete)、查找数据(sk_find,sk_find_ex)、入栈(sk_push)、出栈(sk_pop)、 获取堆栈元素个数(sk_num)、获取堆栈值(sk_value)、设置堆栈值(sk_set)和堆栈 排序(sk_sort)。 3.2 数据结构 openssl堆栈数据结构在 stack.h中定义如下: typedef struct stack_st { int num; char **data; int sorted; int num_alloc; int (*comp)(const char * const *, const char * const *); } STACK; 各项意义如下: num: 堆栈中存放数据的个数。 data: 用于存放数据地址,每个数据地址存放在 data[0]到 data[num-1]中。 sorted: 堆栈是否已排序,如果排序则值为 1,否则为 0,堆栈数据一般是无序的,只 有当用户调用了 sk_sort操作,其值才为 1。 comp: 堆栈内存放数据的比较函数地址,此函数用于排序和查找操作;当用户生成一 个新堆栈时,可以指定 comp为用户实现的一个比较函数;或当堆栈已经存在 时通过调用 sk_set_cmp_func函数来重新指定比较函数。 注意,用户不需要调用底层的堆栈函数(sk_sort、sk_set_cmp_func等),而是调用他通过 宏实现的各个函数。 3.3 源码 openssl堆栈实现源码位于 crypto/stack目录下。下面分析了部分函数。 1) sk_set_cmp_func 此函数用于设置堆栈存放数据的比较函数。由于堆栈不知道用户存放的是什么 数据,所以,比较函数必须由用户自己实现。 2) sk_find