我是靠谱客的博主 贪玩心锁,最近开发中收集的这篇文章主要介绍FFMPEG学习【libavutil】:Crypto and Hashing(一),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、AES

一)、函数

struct AVAES *  av_aes_alloc (void)
分配AVAES上下文。


int  av_aes_init (struct AVAES *a, const uint8_t *key, int key_bits, int decrypt)
初始化AVAES上下文。

参数:key_bits:128,192或256

    decrypt:0加密,1解密    


void  av_aes_crypt (struct AVAES *a, uint8_t *dst, const uint8_t *src, int count, uint8_t *iv, int decrypt)
使用先前初始化的上下文加密或解密缓冲区。

参数:count:16字节块数

     dst:目标数组,可以等于src

     src:源数组,可以等于dst

     iv:CBC模式的初始化向量,如果NULL,则使用ECB

     decrypt::0加密,1解密 


二)、变量

const int  av_aes_size


二、Base64

一)、宏

#define  AV_BASE64_DECODE_SIZE(x)   ((x) * 3LL / 4)
计算以长度x解码到数据缓冲区的base64字符串所需的字节输出大小。


#define  AV_BASE64_SIZE(x)   (((x)+2) / 3 * 4 + 1)
计算base64编码x字节所需的输出大小为空终止字符串。


二)、函数

int  av_base64_decode (uint8_t *out, const char *in, int out_size)
解码base64编码的字符串。

参数:out:缓冲区用于解码数据

    in: 以空值终止的输入字符串

    out_size:输出缓冲区的大小(以字节为单位)必须至少为in的长度的3/4,即AV_BASE64_DECODE_SIZE(strlen(in))

返回:写入的字节数,或者在输入无效的情况下为负值


char *  av_base64_encode (char *out, int out_size, const uint8_t *in, int in_size)
将数据编码到base64并进行空终止。

参数:out:编码数据的缓冲区

    out_size:输出缓冲区(包括空终止符)的字节大小必须至少为AV_BASE64_SIZE(in_size)

    in:输入缓冲区包含要编码的数据

    in_size:在缓冲区中以字节为单位的大小

返回:出错或出现错误时为NULL



三、Blowfish

一)、结构体

struct   AVBlowfish{

uint32_t  p [AV_BF_ROUNDS+2];

uint32_t  s [4][256]

}


二)、宏

#define  AV_BF_ROUNDS   16

三)、函数

AVBlowfish *  av_blowfish_alloc (void)
分配AVBlowfish上下文。


void  av_blowfish_init (struct AVBlowfish *ctx, const uint8_t *key, int key_len)
初始化AVBlowfish上下文。

参数:ctx:一个AVBlowfish上下文

    key:密匙

    key_len:密匙长度



void  av_blowfish_crypt_ecb (struct AVBlowfish *ctx, uint32_t *xl, uint32_t *xr, int decrypt)
使用先前初始化的上下文加密或解密缓冲区。

参数:ctx:一个AVBlowfish上下文

    xl:剩下四个字节一半的输入要加密

    xr:右侧四位半字节的输入要加密

    decrypt:0加密,1解密


void  av_blowfish_crypt (struct AVBlowfish *ctx, uint8_t *dst, const uint8_t *src, int count, uint8_t *iv, int decrypt)
使用先前初始化的上下文加密或解密缓冲区。

参数:ctx:一个AVBlowfish上下文

    dst:目标数组,可以等于src

    src:源数组,可以等于dst

    count:8字节块数

    iv:CBC模式的初始化向量,如果使用NULL ECB

    decrypt:0加密,1解密



四、CAMELLIA

一)、函数

struct AVCAMELLIA *  av_camellia_alloc (void)
分配AVCAMELLIA上下文要释放结构体:av_free(ptr)


int  av_camellia_init (struct AVCAMELLIA *ctx, const uint8_t *key, int key_bits)
初始化AVCAMELLIA上下文。

参数:ctx:AVCAMELLIA上下文

    key:用于加密/解密的16,24,32字节的密钥

    key_bits:密钥数:可能是128,192,256


void  av_camellia_crypt (struct AVCAMELLIA *ctx, uint8_t *dst, const uint8_t *src, int count, uint8_t *iv, int decrypt)
使用先前初始化的上下文加密或解密缓冲区。

参数:ctx:AVCAMELLIA上下文

    dst:目标数组,可以等于src

    src:源数组,可以等于dst

    count:16字节块的数量iv CBC模式的初始化向量,ECB模式为NULL

    decrypt:0加密,1解密


二)、变量

const int  av_camellia_size

最后

以上就是贪玩心锁为你收集整理的FFMPEG学习【libavutil】:Crypto and Hashing(一)的全部内容,希望文章能够帮你解决FFMPEG学习【libavutil】:Crypto and Hashing(一)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(73)

评论列表共有 0 条评论

立即
投稿
返回
顶部