FFMPEG学习【libavutil】:Crypto and Hashing(四)

本文介绍Twofish和XTEA两种加密算法的实现细节,包括数据结构定义、函数接口说明等,适用于对加密算法感兴趣的读者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、TWOFISH

一)、函数

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


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

参数:ctx:AVTWOFISH上下文

    key:大小范围从1到32字节的密钥用于加密/解密

    key_bits:密钥数:128,192,256如果小于所需的数,则用零填充到最近的有效值; 如果key_bits为128/192/256,返回值为0,否则为-1,否则为1


void  av_twofish_crypt (struct AVTWOFISH *ctxuint8_t *dst, const uint8_t *srcint countuint8_t *iv, int decrypt)
使用先前初始化的上下文加密或解密缓冲区。

参数:ctx:AVTWOFISH上下文

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

    src:源数组,可以等于dst

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

    decrypt:0加密,1解密



二)、变量

const int  av_twofish_size


二、XTEA

一)、数据结构

struct   AVXTEA{
uint32_t key [16];
}


二)、函数

AVXTEA *  av_xtea_alloc (void)
分配AVXTEA上下文。


void  av_xtea_init (struct AVXTEA *ctx, const uint8_t key[16])
初始化AVXTEA上下文。

参数:ctx:AVXTEA上下文

    key[16]:用于加密/解密的16个字节的密钥,被解释为大字节32位数字


void  av_xtea_le_init (struct AVXTEA *ctx, const uint8_t key[16])
初始化AVXTEA上下文。

参数:ctx:AVXTEA上下文

    key[16]:用于加密/解密的16个字节的密钥,被解释为小字节32位数字


void  av_xtea_crypt (struct AVXTEA *ctxuint8_t *dst, const uint8_t *srcint countuint8_t *iv, int decrypt)
使用先前初始化的上下文,以大尾数格式加密或解密缓冲区。

参数:ctx:AVXTEA上下文

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

    src:源数组,可以等于dst

    count:8字节块数

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

    decrypt:0 for encryption, 1 for decryption


void  av_xtea_le_crypt (struct AVXTEA *ctxuint8_t *dst, const uint8_t *srcint countuint8_t *iv, int decrypt)
使用先前初始化的上下文来加密或解密缓冲区,小端点格式。

参数:ctx:AVXTEA上下文

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

    src:源数组,可以等于dst

    count:8字节块数

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

    decrypt:0 for encryption, 1 for decryption


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值