Linux加密框架 crypto 哈希算法举例 MD5

参考链接

  • Linux加密框架 crypto 哈希算法说明 同步哈希shash_alg | 异步哈希 ahash_alg | 通用部分抽象 hash_alg_common_CHYabc123456hh的博客-CSDN博客
  • Linux加密框架中的主要数据结构(二)_家有一希的博客-CSDN博客

MD5

  •  md5.h - include/crypto/md5.h - Linux source code (v5.15.11) - Bootlin
  •  md5.c - crypto/md5.c - Linux source code (v5.15.11) - Bootlin

属性信息

  • MD5算法实现了init、update、final、export和import等5个算法接口,分别为md5_init、md5_update、md5_final、md5_export和md5_import;
  • 2)MD5算法摘要长度为MD5_DIGEST_SIZE(16)字节,算法状态(即算法运行的上下文)是数据结构struct md5_state的一个实例,外部应用通过算法描述符向算法运行提供上下文环境,因此也是数据结构struct md5_state的一个实例;
  • 3)MD5算法算法名为"md5",算法驱动名在注册时被设置为"md5-generic",算法类型为CRYPTO_ALG_TYPE_SHASH(即同步哈希算法)(存疑),分块长度为MD5_HMAC_BLOCK_SIZE(64)字节
  • md5_state结构体定义在 md5.h头文件中
  • MD5算法运行的上下文空间是数据结构struct md5_state的一个实例,该数据结构定义如下所示
struct md5_state {u32 hash[MD5_HASH_WORDS];u32 block[MD5_BLOCK_WORDS];u64 byte_count;
};

总结 

  •  数据结构md5_state包括哈希计算中间值hash(包含MD5_HASH_WORDS(4)个双字)、分块数据block(包含MD5_BLOCK_WORDS(16)个双字)以及已输入的消息字节长度byte_count。
  • MD5算法的哈希计算是以块为单位的,计算过程中如果输入消息不满一个分块,则先缓存在block中,直到输入消息满一个分块或调用了final接口才进行哈希计算
  • 在计算过程中,已输入的消息包括已计算的消息和未计算缓存的消息,因此可通过byte_count值判断缓存是否已满一个分块以及缓存中剩余的空间等。
  • 在加密框架定义的算法类型宏如下所示

  •  对外部应用来说,不关心哈希算法的实现方式,因此将使用的哈希算法的算法类型标注为CRYPTO_ALG_TYPE_HASH,如IPSEC将使用的哈希算法标记为CRYPTO_ALG_TYPE_HASH。
  • 由定义可知,CRYPTO_ALG_TYPE_SHASH和CRYPTO_ALG_TYPE_AHASH的区别只在最后1位。外部应用(如IPSEC AH协议)使用哈希算法(如"hmac(md5)"算法)时,由于加密框架默认的算法实现方式为异步方式,创建的算法实例是异步哈希算法实例,但实际上并不关心哈希算法的具体实现方式,因此在按照算法名查找算法时,除算法类型type外还需要设置算法类型屏蔽位mask(如CRYPTO_ALG_TYPE_AHASH_MASK(0x0e)),这样待查找的算法类型为type&mask=0x08(CRYPTO_ALG_TYPE_HASH),不关心哈希算法的具体实现方式,以"hmac(md5)"算法为例,其实现方式为同步方式。
  • 分组算法不同,某些外部应用可能调用静态哈希算法(如MD5算法)计算输入消息的摘要值(如某些文件的MD5值),但是MD5算法的通用算法说明md5_alg中未设置算法类型常量cra_type,而是在哈希算法注册的准备阶段(shash_prepare_alg函数)统一设置为crypto_shash_type

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/446098.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

事务没提交的数据查的出来吗?_“金三银四”面试官:说说事务的ACID,什么是脏读、幻读?...

一、事务事务是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。--摘自百科在MySQL里,事务是在引擎层面实现,比如MyIsam不支持,InnoDB支持面试清单(Java岗):JavaJVM数…

Linux加密框架 crypto 算法模板

参考链接 Linux加密框架中的主要数据结构(三)_家有一希的博客-CSDN博客algapi.h - include/crypto/algapi.h - Linux source code (v5.15.11) - Bootlin 定义 struct crypto_template {struct list_head list;struct hlist_head instances;struct modu…

Linux加密框架 crypto 算法模板 CBC模板举例

参考链接 Linux加密框架中的主要数据结构(三)_家有一希的博客-CSDN博客https://blog.csdn.net/CHYabc123456hh/article/details/122194754 CBC算法模板 cbc.c - crypto/cbc.c - Linux source code (v5.15.11) - BootlinCBC算法模板属性 1)CBC算法模板名…

leetcode数组汇总_LeetCode刷题实战43:字符串相乘

算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试算法面试。所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 !今天和大家…

Linux加密框架 crypto 算法模板 HMAC模板举例

参考链接 Linux加密框架中的主要数据结构(三)_家有一希的博客-CSDN博客Linux加密框架 crypto 算法模板_CHYabc123456hh的博客-CSDN博客 HMAC算法模板 hmac.c - crypto/hmac.c - Linux source code (v5.15.11) - Bootlinhmac.c - crypto/hmac.c - Linux…

判断非负整数是否是3的倍数_五年级数学因数与倍数知识点汇总与解题方法技巧...

在日常教学过程中,我发现孩子们和某些家长对学习数学的方法有一些误区,就是觉着数学,单纯就是逻辑思维,只要多做练习题就能学好,但是不是这样的,低年级的学生,学习数学还是以背诵为主&#xff0…

tcp通讯一次最多能发送多少数据?_关于TCP/IP,必须知道的十个知识点

本文整理了一些TCP/IP协议簇中需要必知必会的十大问题,既是面试高频问题,又是程序员必备基础素养。一、TCP/IP模型TCP/IP协议模型(Transmission Control Protocol/Internet Protocol),包含了一系列构成互联网基础的网络…

Linux内核crypto子系统的调用逻辑

testmgr.c - crypto/testmgr.c - Linux source code (v5.15.11) - Bootlin上述代码是内核内部即crypto子系统对外提供密码服务的测试程序调用流程&#xff1a;crypto API <—> crypto core <—> crypto_register_alg处于用户态的程序想要调用处于内核态的密码算法&…

Linux加密框架 crypto算法模板 以及CBC算法模板实例

参考链接 Linux加密框架中的主要数据结构&#xff08;四&#xff09;_家有一希的博客-CSDN博客algapi.h - include/crypto/algapi.h - Linux source code (v5.15.11) - Bootlin struct crypto_instance {struct crypto_alg alg;struct crypto_template *tmpl;union {/* Node i…

tomcat temp 大量 upload 文件_渗透测试之文件上传漏洞总结

文末下载上传环境源码客户端js检查一般都是在网页上写一段javascript脚本&#xff0c;校验上传文件的后缀名&#xff0c;有白名单形式也有黑名单形式。查看源代码可以看到有如下代码对上传文件类型进行了限制&#xff1a;我们可以看到对上传文件类型进行了限制。绕过方法1.我们…

Linux加密框架 crypto算法模板 以及HMAC算法模板实例

HMAC算法模板实例 HMAC算法模板的创建实例的接口是hmac_create函数hmac.c - crypto/hmac.c - Linux source code (v5.15.11) - Bootlin hmac_create输入的参数包括 算法模板 tmpl 和 算法模板实例参数 tbhmac_cretae函数返回的结果为0表示算法模板实例已经创建注册算法模…

linux加密框架 crypto 算法crypto_register_alg的注册流程

算法注册流程 静态算法模块初始化 分组算法模块初始化 AES算法模块&#xff08;aes_generic.c&#xff09;的初始化接口aes_init实现向加密框架注册AES算法的功能&#xff0c;如下所示。aes_generic.c - crypto/aes_generic.c - Linux source code (v5.15.12) - Bootlin sta…

linux加密框架 crypto 静态哈希算法crypto_register_shash注册流程

参考链接 Linux加密框架的算法管理&#xff08;一&#xff09;_家有一希的博客-CSDN博客_linux加密框架设计与实现shash.c - crypto/shash.c - Linux source code (v5.15.12) - Bootlin 函数介绍 crypto_register_shash函数实现向加密框架注册静态哈希算法的功能&#xff0c;…

多个线程访问统一对象的不同方法_C#多线程读写同一文件处理

在多线程访问读写同一个文件时&#xff0c;经常遇到异常&#xff1a;“文件正在由另一进程使用&#xff0c;因此该进程无法访问此文件”。多线程访问统一资源的异常&#xff0c;解决方案1&#xff0c;保证读写操作单线程执行&#xff0c;可以使用lock解决方案2&#xff0c;使用…

linux加密框架 crypto 通用算法注册接口__crypto_register_alg注册流程

函数介绍 __crypto_register_alg函数实现向加密框架注册算法&#xff08;包括静态算法和动态算法&#xff09;的功能&#xff0c;输入参数为算法说明alg&#xff0c;注册成功时返回算法注册用的算法幼虫larval&#xff0c;注册失败时返回失败原因。__crypto_register_alg函数执…

spark官方文档_Spark整合Ray思路漫谈

什么是Ray之前花了大概两到三天把Ray相关的论文&#xff0c;官网文档看了一遍&#xff0c;同时特意去找了一些中文资料看Ray当前在国内的发展情况(以及目前国内大部分人对Ray的认知程度)。先来简单介绍下我对Ray的认知。首先基因很重要&#xff0c;所以我们先需要探查下Ray最初…

linux加密框架 crypto 算法管理 - 算法查找接口 crypto_find_alg

算法查找接口crypto_find_alg 算法实例tfm是算法的一个可运行的副本&#xff0c;因此在创建算法实例前首先要查找确认算法是否已经注册有效&#xff0c;此时算法查找由函数crypto_find_alg实现。补充&#xff1a; struct crypto_tfm *tfm; crypto_tfm类型指针tfm可以理解为指代…

linux加密框架 crypto 算法管理 - 算法查找接口 crypto_alg_mod_lookup

参考链接 Linux加密框架的算法管理&#xff08;二&#xff09;_家有一希的博客-CSDN博客linux加密框架 crypto 算法管理 - 算法查找接口 crypto_find_alg_CHYabc123456hh的博客-CSDN博客 函数介绍 crypto_alg_mod_lookup函数输入参数包括待查找的算法名name、算法类型type和算…

qt triggered信号_Qt之网络编程UDP通信

点击上方“Qt学视觉”&#xff0c;选择“星标”公众号重磅干货&#xff0c;第一时间送达想要学习的同学们还请认真阅读每篇文章&#xff0c;相信你一定会有所收获UDP通信概述UDP(UserDatagramProtocol&#xff0c;用户数据报协议)是轻量的、不可靠的、面向数据报(datagram)、无…

adguard没有核心 core no_面试官:线程池如何按照core、max、queue的执行顺序去执行?...

前言这是一个真实的面试题。前几天一个朋友在群里分享了他刚刚面试候选者时问的问题&#xff1a;"线程池如何按照core、max、queue的执行循序去执行&#xff1f;"。我们都知道线程池中代码执行顺序是&#xff1a;corePool->workQueue->maxPool&#xff0c;源码…