linux内核hmac-sha1使用

【HMAC-SHA1算法以及工作原理】 连接HMAC-SHA1工作原理以及工具代码 阅读详情

最近开发IPSec模块时,需要用到内核中hmac-sha1算法下面为hmac-sha1的简单使用方式

#include <linux/crypto.h>
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <crypto/hash.h>
#include <linux/scatterlist.h>

static void hexdump(char *data, int len)
{
	int i = 0;
	for(; i < len; i++){
		if((len % 16) == 0)
			printk("\n");
		printk("%2x ", data[i]);
	}	
	printk("\n");
}

static int __init hmac_sha1(void) 
{
	struct crypto_hash  *hash;
	struct hash_desc *desc;

	char key[20];
	struct scatterlist sg;
	char data[100];
	char digest[20];

	memset(data, 0 ,100);
	memset(key, 0 ,20);
		
	hash = crypto_alloc_hash("hmac(sha1)", 0, CRYPTO_ALG_ASYNC);

	if(IS_ERR(hash)){
		printk(KERN_INFO "Can't alloc hmac\n");
		return -2;
	}

	desc->tfm = hash;
	desc->flags = 0;

	if(crypto_hash_setkey(hash, key, 20)){
		printk(KERN_INFO "crypto_hash_setkey()\n");
		return -1;
	}	

	if((crypto_hash_init(desc))){
		printk("crypto_hash_init failed\n");
		return -1;
	}

	sg_init_table(&sg, 1);
	sg_set_buf(&sg, data, sizeof(data));

	if (crypto_hash_update(desc, &sg, sizeof(data))){
		printk(KERN_INFO "crypto_hash_update()\n");
		return -1;
	}

	if((crypto_hash_final(desc, digest))){
		printk("crypto_hash_final\n");
		return -1;
	}

	hexdump(digest, 20);
}

static void __exit hmac_sha1_exit(void)
{
	printk("hmac_exit\n");
}

module_init(hmac_sha1);
module_exit(hmac_sha1_exit);

MODULE_LICENSE("GPL");

Linux命令sha1sum的详细解析 sha1sum命令是Linux操作系统下用于计算文件的SHA-1哈希值的工具。SHA-1算法可以将任意长度的数据转换成一个160位的哈希值(通常以40个十六进制字符表示)。这一特性使得sha1sum命令在验证文件是否在传输或存储过程中被篡改时非常有用。此外,SHA-1也常用于数字签名、密码管理和随机数生成等领域。 阅读详情

相关推荐

PowerQUICC III SEC硬件加密加速器在Linux下的驱动开发与性能评估实践

在嵌入式系统和网络设备中,硬件加密加速器是解决CPU软加密性能瓶颈、提升数据吞吐量的关键技术。其核心原理是通过独立的协处理器(如PowerQUICC III的SEC模块)执行AES、3DES等复杂算法,将CPU从繁重的加解密运算中解放出来,实现指令下发、硬件执行的异步处理模式。这种硬件卸载技术为IPsec、SSL/TLS等安全协议提供了强大的性能支撑,尤其适用于网关、防火墙等需要处理高并发加密流量的应用场景。本文基于飞思卡尔MPC8555E平台,详细解析了SEC模块的中断配置、描述符机制等底层硬件操作,并完

weixin_30552811的博客 426

HMAC-SHA1签名认证算法

HMAC-SHA1: HMAC是哈希运算消息认证码 (Hash-based Message Authentication Code),HMAC运算利用哈希算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出。HMAC-SHA1签名算法是一种常用的签名算法,用于对一段信息进行生成签名摘要。 生成一个随机秘钥(python范例): #coding:utf-8 from Crypt

daiyudong2020的博客 3万+

Linux C hmac-sha1 算法(内核态)

Linux C hmac-sha1 算法实现源码

一年一年又一年 1815

HMAC-SHA1加密

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33889665的博客 2209

Linux C/C++ 内核态算法导航

Linux C AES-GCM算法(内核态)https://blog.youkuaiyun.com/afk_02/article/details/121768143 Linux C hmac-sha1 算法(内核态)https://blog.youkuaiyun.com/afk_02/article/details/121654188 Linux C 字符串快速搜索(内核态)https://blog.youkuaiyun.com/afk_02/article/details/121601806 Linux C B+树算法源码(内核态+重

一年一年又一年 1901

5款高性价比LDO芯片实测对比:从TPS7A4501到LM2940,哪款更适合你的项目?

本文通过实测对比了TPS7A4501、TPS72301、LM2937、LM2940等五款高性价比LDO芯片的核心性能。文章详细分析了跌落电压、输出噪声、静态电流及热性能等关键指标,并结合电池供电物联网节点、高精度数据采集等典型应用场景,提供了清晰的选型指南,帮助工程师根据项目需求选择最合适的LDO芯片。

weixin_29305337的博客 115

Java加密技术(三)—— HMACSHA1 加密算法

HMACSHA1 是从 SHA1 哈希函数构造的一种键控哈希算法,被用作 HMAC(基于哈希的消息验证代码)。 此 HMAC 进程将密钥与消息数据混合,使用哈希函数对混合结果进行哈希计算,将所得哈希值与该密钥混合,然后再次应用哈希函数。 输出的哈希值长度为 160 位。 在发送方和接收方共享机密密钥的前提下,HMAC 可用于确定通过不安全信道发送的消息是否已被篡改。 发送方计算原始数

编程进化论 5万+

Cursor Agent模式下如何优雅切换conda环境运行Python脚本?3种实用方法实测

本文针对Cursor Agent模式下运行Python脚本时环境错配的痛点,实测了三种优雅切换conda环境的实用方法。通过Shell全局配置、项目级.cursorrc文件定制以及对话中直接指令,开发者可以确保AI助手在正确的虚拟环境中执行代码,从而提升开发效率和协作流畅度。

redis7keeper的博客 597

Linux 2.6.19.x 内核编译配置选项简介(九)

Quota support 磁盘配额支持,限制某个用户或者某组用户的磁盘占用空间,Ext2/Ext3/Reiserfs都支持它 Old quota format support 老式的配额格式支持 Quota format v2 support 新的v2格式允许使用32位的UID/GID Dnotify support 旧式的基于目录的文件变化的通知机制(新机制是Inotify),目

pugu12的专栏 515

linux基线检查、基线加固、安全漏扫、系统漏洞、centos7、文尾部附脚本

等保三级-CentOS Linux 7合规基线检查 风险分类:系统-等保三级-CentOS Linux 7合规基线检查 检测项说明: CentOS Linux 7合规基线检查,对标中国等保2.0第三级等级保护基本要求部分检查项目,仅供参考 检查项目 : 应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换 加固建议: 1、执行`cat /etc/shadow | awk -F: '($2 == "" ) { print $1}' `, 查看空密码账户并处理; 2、

swindy博客 5622

用 OData V2 元数据驱动表格体验:SAP UI5 Smart Table 全面解析

摘要: Smart Table是SAPUI5中基于OData元数据自动生成表格的控件,支持个性化、排序、过滤等高级功能。文章从九个维度深入解析其工作机制:1)通过元数据和注解自动生成列;2)支持多种表格类型;3)关键属性的静态化特性;4)与其他智能控件的协同;5)导航属性和导出的处理;6)响应式设计;7)个性化配置;8)性能优化策略;9)端到端实现案例。Smart Table通过读取OData元数据自动完成表格渲染,大幅减少开发工作量,特别适合企业级应用开发场景。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 321

MPC8555E安全引擎实战:HMAC-SHA1硬件加速驱动与调试指南

在嵌入式系统开发中,硬件安全引擎是解决数据安全与处理性能矛盾的关键技术。其核心原理是通过专用协处理器独立执行密码学运算,如哈希函数和加解密算法,从而释放主CPU算力。这种硬件加速技术能显著提升系统吞吐量并降低功耗,在工业网关、网络设备等对实时性和安全性要求高的场景中价值突出。HMAC(基于哈希的消息认证码)作为验证数据完整性与真实性的基础机制,其硬件实现能避免密钥暴露于总线,增强系统安全性。本文以恩智浦MPC8555E处理器的安全引擎(SEC)为例,深入解析其描述符驱动的异步架构,并提供从环境搭建、寄存器配

weixin_30458043的博客 386

YOLO11-pose关键点检测:训练实战篇 | 自己数据集从labelme标注到生成yolo格式的关键点数据以及训练教程

通过本教程,我们完整地学习了如何使用YOLO11-pose进行关键点检测任务的训练。从数据标注、格式转换到模型训练和评估,每个步骤都提供了详细的代码和说明。更高的精度:随着算法改进,关键点检测的精度将进一步提高实时性能:模型优化将使实时高性能关键点检测成为可能多模态融合:结合深度信息、热成像等多模态数据提升检测能力领域自适应:模型能够更好地适应不同场景和领域希望本教程能够帮助你在自己的项目中成功应用YOLO11-pose进行关键点检测。如果你有任何问题或建议,欢迎在评论区留言讨论!

QQ_778132974的博客 739

SRv6在Linux内核中的实现

Linux4.4 ——》Linux4.10 commit 1,kernel/git/torvalds/linux.git - Linux kernel source tree **ipv6: implement dataplane support for rthdr type 4 (Segment Routing Header)**This patch implements the following operations: - Intermediate segment endpoint: incremen

weixin_42652361的博客 2620

ETAS工具导入DBC生成Com协议栈

ETAS工具导入DBC主要也是生成arxml用的,ETAS推荐使用Cobra导入,本文介绍导入过程及注意事项不管是导入DBC还是arxml,本质上都是为了生成对应的com协议栈,目的是为了减少重复的工作量,所以,前期定义好收发的矩阵很重要,一般导入一次之后,后面就可以按变更点手动更改了。

赞的博客 1710

RK3588 实战级 YOLOv5 Android 全解析:NPU 量化 + 多线程 + 跟踪算法,源码一次买齐

本文将带你完成一个完整的AI视觉项目:在搭载RK3588芯片的Android开发板上运行实时目标检测与跟踪应用。实战目标:成功运行官方YOLOV5摄像头实时检测案例技术深度:深入理解RKNN开发框架和源码实现核心技能:掌握NPU推理、多线程并发、目标跟踪等关键技术。

FJN110的博客 156

Linux内核密码模块

Linux内核密码模块简单介绍

wq897387的专栏 1012

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

使用YubiKey实现Linux全磁盘加密:挑战响应原理与ykfde实战指南

全磁盘加密(FDE)是保护数据安全的基础技术,它通过对整个存储设备进行加密,防止物理访问导致的数据泄露。其核心原理是在操作系统加载前,通过密钥解密磁盘数据。传统的FDE方案依赖密码短语,存在输入繁琐和单点故障风险。挑战-响应认证机制作为一种更安全的双因素认证方式,通过服务端发送随机挑战、硬件密钥计算响应并返回验证,实现了“所知”(PIN)与“所有”(硬件)的结合,有效抵御密码窃取和重放攻击。在Linux生态中,LUKS是标准的磁盘加密方案,而ykfde项目创新性地将YubiKey硬件的挑战-响应功能与LUK

weixin_30843605的博客 430

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

linux2.6内核配置参考,Linux 2.6内核配置说明(15----Cryptographic options加密选项)

Cryptographic API提供核心的加密API支持.这里的加密算法被广泛的应用于驱动程序通信协议等机制中.子选项可以全不选,内核中若有其他部分依赖它,会自动选上Cryptographic algorithm manager创建加密模版实例,必须要选HMAC support为IPSec所必须,可为PPPoE提供压缩支持Null algorithmsNULL加密算法(什么也不做),用于IPse...

weixin_34236334的博客 215

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Linux encrypted密钥管理内核密钥环实现

key_type_encrypted` 的注册发生在 `security/keys/encrypted-keys/encrypted.c` 的 `init_encrypted()` 中,通过 `register_key_type(&key_type_encrypted)` 向内核密钥环子系统注册。实例化入口 `encrypted_instantiate()` 接收用户态通过 `add_key()` 系统调用传入的 `datablob`。Linux Encrypted密钥管理内核密钥环实现。

2501_94114815的博客 49

内核算法自检模块tcrypt的加载流程

纯原创哈,在使用内核目录加密模块下的tcrypt.c时遇到了如下问题。 modprobe: ERROR: could not insert 'tcrypt': Resource temporarily unavailable 百度上完全找不到答案,在谷歌时找到了一点线索~ 下面是我的加载流程: 1.进入默认内核目录下(例:/usr/src/kernels/linux-4.9.25.arm64.1...

墨染锦年的博客 3万+

编译linux内核时drivers/mtd/mtdconcat出错,linux 内核编译(七)

转:linux内核编译## IP: Netfilter Configuration#CONFIG_IP_NF_QUEUE=mCONFIG_IP_NF_IPTABLES=mCONFIG_IP_NF_MATCH_IPRANGE=mCONFIG_IP_NF_MATCH_TOS=mCONFIG_IP_NF_MATCH_RECENT=mCONFIG_IP_NF_MATCH_ECN=m# CONFIG_IP_...

weixin_35869628的博客 529

鸿蒙仓颉语言【cryptocj 库】(介绍与SHA、MD5、HMAC摘要算法)

cryptocj 是一个安全的密码库,包括常用的密码算法、常用的密钥生成和签名验证。 该库是对 C 语言的 openSSL 封装的仓颉加密算法

鸿蒙的技术博客 1690

Crypto API - 3. 内核加密 API 架构

密码消息摘要实现再次遵循与上面 ASCII art图片中描述的相同概念。例如,HMAC(SHA256) 是使用 hmac.c 和 sha256_generic.c 实现的。以下 ASCII art说明了实现:当调用方触发HMAC操作时,调用顺序如下:AHASH API 函数由调用方调用。HMAC 实现根据需要执行其操作。在初始化 HMAC 密码期间,将实例化 SHA256 的 SHASH 密码类型。将保留 SHA256 实例的密码句柄。

maimang1001的专栏 820
上一篇: GCC编译优化指南
下一篇: 理解 pkg-config 工具
奔跑的码仔
奔跑的码仔 领域专家: 嵌入式与硬件开发技术领域 领域专家: 嵌入式与硬件开发技术领域
博客等级 码龄15年 2万+粉丝 191原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值