HMAC与数字签名学习记录

C# WebAPI安全实战:JWT认证与HMAC数字签名防篡改防重放 在分布式系统和微服务架构中,API安全是保障数据交互可信的基石。其核心原理在于建立一套可靠的身份验证与数据完整性保障机制。从技术价值看,这不仅能防止未授权访问,更能有效抵御数据在传输过程中被篡改或重放的风险,是构建高安全等级应用服务的必备能力。典型的应用场景包括金融交易、物联网设备通信、开放平台接口等对安全敏感的业务领域。本文聚焦于C# WebAPI开发,深入探讨如何结合JWT(JSON Web Token)认证与HMAC-SHA256数字签名技术,构建一套覆盖身份验证、防参数篡改和防重放攻击的全方位安全方 阅读详情

密码学与安全技术

数字签名

数字签名用于证实某数字内容的完整性integrity和来源(或不可抵赖性non-repudiation)

典型场景:A需要给B一份数据,但B如何确认这份数据是来自于A且没有被篡改过呢?
方法:
1. A将数据通过摘要算法进行计算生成摘要信息。
2. A将摘要信息通过自己的私钥进行加密生成加密串。
3. A将数据和加密串一起发送给B。
4. B收到A的数据和加密串之后,通过A的公钥进行解密得到A数据的摘要信息。
5. B再将A发送数据部分进行进行摘要计算,如果生成的摘要与传递的摘要相同则认为数据没有被篡改。

问题思考:
1. 摘要算法是否两边统一:(废话,不解释大家也都知道摘要算法不一样生成的摘要值咋可能一样呢)
2. 私钥和公钥的持有方能否对调:不能,因为为了验证A是A,必须是用A私钥进行加密,公钥进行解密。如果反过来,公钥加密则不能做到验证身份的功能,因为公钥所有人都持有。
3. 公钥能够在网络中传输,而私钥不能再网络中传输,防止被窃取。
4. B通过比较摘要保证内容不被篡改即保证了数据在传输过程中的完整性。
5. B通过持有A的公钥,保证此数据来自于A而不是其他人(前提私钥只有A知道,其他人不知道A的私钥)

HMAC

全称(Hash-based Message Authentication Code,即基于Hash的消息的认证码)。
- 基本过程为对某个消息,利用提前共享的对称密钥和Hash算法进行加密处理,得到HMAC值。
- 该HMAC值提供方可以证明自己拥有共享密钥的对称密钥,并且消息自身可以利用HMAC确保未经篡改。

定义HMAC需要一个加密用散列函数(表示为H,可以是MD5或者SHA-1)和一个密钥K。我们用B来表示数据块的字节数。(以上所提到的散列函数的分割数据块字长B=64),用L来表示散列函数的输出数据字节数(MD5中L=16,SHA-1中L=20)。鉴别密钥的长度可以是小于等于数据块字长的任何正整数值。应用程序中使用的密钥长度若是比B大,则首先用使用散列函数H作用于它,然后用H输出的L长度字符串作为在HMAC中实际使用的密钥。一般情况下,推荐的最小密钥K长度是L个字节。(来自百度百科)

使用HMAC的客户端认证流程:
1. 客户端向服务器发起连接。
2. 服务器发送一个随机数消息,保留在session中。
3. 客户端得到随机数,通过将随机数(B) + 认证信息(K) 通过HASH算法计算出摘要信息,并通过对称加密算法进行加密。
4. 客户端将密文数据传递给服务器。
5. 服务器通过对称加密解密。
6. 服务器通过自己存储的认证信息+session中的随机数,以及相同的HASH算法重新计算摘要值,如果相同则认为客户端身份合法。

  • 问题思考:
  • HMAC 的作用,能够保证如下几件事情
    1. 能够保证通信双方持有的共享密钥一致,或者说认证信息一致,再应用到实例中就是用户登录的密码与服务器存储的一致。
    2. 能够保证共享密钥不会再认证过程中被窃取,已经做过为摘要生成的密钥参数使用。
    3. 能够保证报文在传输过程中没有被篡改,传输数据正确。

说白了HMAC的应用场景就是,我持有你的认证信息,你来向我发起登录,我要识别出是你,但又要保证你的认证信息不能被别人轻易获取,还要保证传递过程中报文的正确性。(自己瞎逼逼,如果有错误的地方还请大神们指点!)

参考:
《区块链技术指南》
百度百科:https://baike.baidu.com/item/hmac/7307543?fr=aladdin

数据完整性保障:从哈希、HMAC到数字签名的技术原理与工程实践 在信息安全领域,数据完整性是确保信息在传输和存储过程中未被篡改的核心目标,它与保密性、不可否认性共同构成密钥体系的三大基石。其基本原理是为数据生成唯一的“数字指纹”(哈希值),任何细微改动都会导致指纹剧变,从而被检测。实现完整性的主流技术包括哈希函数、消息认证码和数字签名:哈希函数(如SHA-256、SM3)生成指纹但无法防调包;消息认证码通过共享密钥为指纹上锁,提供数据完整性及来源认证;数字签名则基于非对称密码学,结合私钥签名和公钥验证,同时解决完整性和不可否认性问题。这些技术在工程实践中价值显著,例如在 阅读详情

相关推荐

HMAC-SHA1 算法签名 亲测可用

目前很多应用的SDK都开始需要Authorization(鉴权),然网络浩瀚,杂乱无章。终于找到了可用的方案,已为腾讯官方做了一个C#的SDK,大家放心copy。

HMAC与数字签名区别:Hash-based Message Authentication Code的深入理解

数字签名是一种用于验证电子文档真实性和完整性的技术。它基于公钥加密体系,通过使用发送者的私钥对数据的摘要进行加密,生成一个签名,这个签名会附在数据后面一起发送。接收者使用发送者的公钥对签名进行解密,并将解密后的摘要与接收到的数据重新计算的摘要进行比较,如果两者匹配,则证明数据在传输过程中未被篡改,且确实来自发送者。HMAC和数字签名在身份验证和数据完整性方面都发挥着关键作用,但它们在密钥管理、非对称加密的使用、以及性能和计算复杂度上存在显著差异。选择使用哪种机制应基于具体的应用场景和安全需求。

kkchenjj的博客 1540

总结所有的池化(Pooling)方法

为什么池化? 池化(Pooling)层和卷积层、全连接层一样,都是卷积神经网络的组成部分。 卷积神经网络中的卷积层会将卷积Filter应用于输入图像,以便创建特征映射来总结输入中这些特征的存在。 卷积层被证明是非常有效的,在深层模型中叠加卷积层可以让接近输入的层学习低层特征(如线条),在模型中更深(高)的层用于学习高阶或者更抽象的特征,如形状或特定对象。 卷积层特征映射输入的一个局限性是它们只能精确记录特征在输入层的位置。这意味着在输入图像中特征位置的小幅移动将导致不同的特征映射。这可以随着重新裁剪

大脸猫的博客 1万+

数字签名----消息验证码 HMAC

一、概念 HMAC 全称(Hash-based Message Authentication Code,即基于Hash的消息的认证码)。 - 基本过程为对某个消息,利用提前共享的对称密钥和Hash算法进行加密处理,得到HMAC值。 - 该HMAC值提供方可以证明自己拥有共享密钥的对称密钥,并且消息自身可以利用HMAC确保未经篡改。 二、为什么不直接使用哈希值来进行校验 每个数据哈希值唯一,数据被伪造篡改后,哈希值改变。 例如: xxxxx?name=hahah&hash=547779D1FBA9B6

互联网叫兽 2481

HMC7044芯片模拟SPI配置

摘要: HMC7044是一款高性能双环路整数N分频抖动衰减器,支持SPI接口配置,适用于高速数据转换器时钟系统。该芯片采用双PLL级联架构,具有14路可配置输出,可满足GSM/LTE基站设计需求。SPI接口采用3线模式(SLEN/SCLK/SDATA),支持24位寄存器读写(13位地址+8位数据)。驱动实现基于Zynq EMIO模拟SPI,提供初始化、数据传输及寄存器配置功能,支持三线制工作模式和多种时钟参数设置。

toonyhe的博客 1094

家长必看!用RouterOS轻松屏蔽不良网站,保护孩子上网安全

本文为家长提供了一份详细的RouterOS路由器配置指南,旨在通过技术手段保护儿童上网安全。文章核心介绍了如何利用RouterOS的DNS静态条目功能,轻松实现禁止访问特定不良网站,并结合防火墙时间规则,为孩子构建一个纯净、可控的家庭网络环境,操作简单,无需专业背景。

weixin_28363123的博客 1266

HMAC:给消息加上 “魔法签名”

在数字世界里,我们经常需要发送和接收各种消息,但怎么确保这些消息在传输过程中没有被篡改,或者确实是来自我们信任的人呢?这时候,HMAC 就像是一位 “魔法签名师”,给我们的消息加上一个独特的 “魔法签名”,让接收方能够轻松验证消息的合法性和完整性。

爪巴虫 1330

国土变更调查中六类拓扑错误的成因分析与高效修复实践

本文深入分析了国土变更调查中六类拓扑错误的成因,包括边界不一致和不规则图形等常见问题,并提出了高效的自动化修复实践。通过智能咬合算法、引力-斥力平衡模型等核心技术,显著提升了修复效率,节省人工质检时间70%。文章还分享了实战中的避坑指南和黄金法则,为相关从业人员提供了宝贵经验。

weixin_29202213的博客 359

签名、杂凑、MAC、HMAC

杂凑(哈希)是一种单向密码学函数,能将任意长度的输入数据(称为 “消息” 或 “明文”)映射为固定长度的输出值(称为 “哈希值”“摘要” 或 “指纹”),且输出长度仅由哈希算法本身决定(与输入长度无关)。MAC 是一种带密钥的完整性与真实性验证技术,通过 “消息 + 共享密钥” 生成固定长度的认证码,仅持有共享密钥的双方可验证认证码,从而同时确保数据 “未被篡改”(完整性)和 “来源合法”(真实性)。HMAC 是MAC 的一个具体实现类别。

Yisitelz的博客 1582

保姆级教程:用Python+OpenCV搞定Orbbec Gemini深度与彩色流对齐(附完整代码)

本文提供了一份详细的Orbbec Gemini深度与彩色流对齐教程,涵盖从环境配置到完整代码实现的每一步。通过解析深度流对齐原理,对比不同对齐模式,并提供工业级应用中的问题排查方法,帮助开发者快速掌握Orbbec Gemini相机的使用技巧。文章还包含进阶应用如点云生成与三维重建的实战代码。

weixin_29090917的博客 470

集成学习之GBDT

GBDT

joejoeqian的博客 1256

常见的七种加密算法及实现

数字签名、信息加密是前后端开发都经常需要使用到的技术,应用场景包括了用户登入、交易、信息通讯、oauth等等,不同的应用场景也会需要使用到不同的签名加密算法,或者需要搭配不一样的签名加密算法来达到业务目标。这里简单的给大家介绍几种常见的签名加密算法和一些典型场景下的应用。

linzhongshu的专栏 3573

一文吃透:从零到一开发一套 ABAP RAP 应用的完整路径

ABAP RAP开发实战摘要 本文系统介绍了ABAP RESTful Application Programming Model (RAP)在企业级应用开发中的实施路径。文章以出差申请业务场景为例,详细拆解了RAP开发的六步主线流程: 数据库表设计:规范主键、审计字段设计 CDS数据建模:通过视图定义业务对象实体及关联 行为定义与实现:使用BDEF声明事务规则,Behavior Pool类实现业务逻辑 业务对象投影:裁剪服务接口视图 服务定义与绑定:按OData协议暴露服务 UI集成测试:支持Fiori E

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

java HMAC加密/解密(附带源码)

java HMAC加密/解密(附带源码)

欢迎来到我的博客!这里是一个专注于计算机技术的分享平台,涵盖编程开发、算法研究、系统架构、软件工程等多个领域。无论你是初学者还是资深开发者,都能在这里找到有价值的内容。 1242

AutoSAR配置视频讲解:总目录

AutoSAR实验视频讲解:闪烁一颗LED实验【总目录】 欢迎大家来到雪云飞星的《AutoSAR实验视频讲解》,本专栏是一个关于AutoSAR的闪烁LED灯的实验课程,一共8节课,每节课的视频都放在文章最后,传送门如下: 前言 AutoSAR实验视频讲解:简介 EB 的Mcal配置 AutoSAR实验视频讲解:Mcal配置 DaVinci Cfg配置 AutoSAR实验视频讲解:新建DaVinci工程 AutoSAR实验视频讲解:Os配置(预计2021-3-10更新) AutoSAR实验视频讲解:检查校验报

雪云飞星的博客 2万+

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...

HMAC

<br />HMAC<br /> 根据RFC 2316(Report of the IAB,April 1998),HMAC(散列消息身份验证码: Hashed Message Authentication Code)以及IPSec被认为是Interact安全的关键性核心协议。它不是散列函数,而是采用了将MD5或SHA1散列函数与共享机密密钥(与公钥 /私钥对不同)一起使用的消息身份验证机制。基本来说,消息与密钥组合并运行散列函数。然后运行结果与密钥组合并再次运行散列函数。这个128位的

wangschang的专栏 1万+

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

【ZeroRange WebRTC】数字签名与 WebRTC 的应用(从原理到实践)

本文系统讲解了数字签名的安全目标、典型算法及其在WebRTC中的应用。首先阐述了数字签名与哈希、HMAC的区别:哈希仅提供完整性检测,不具备认证和不可否认性;HMAC实现对称认证;数字签名则能同时保证完整性、认证和不可否认性。介绍了RSA-PSS、ECDSA和Ed25519等常用签名算法的特点和安全要点。 在PKI方面,说明了X.509证书将公钥与实体标识绑定并由CA签名形成信任链。重点分析了WebRTC中的安全机制:通过DTLS握手交换证书指纹,在SDP中钉扎指纹来防止中间人攻击,最终建立SRTP加密通道

love131452098的博客 1198

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Java17深度探索记录类与密封类的实用开发指南

Java 17中记录类与加密类的特性与基础概念 记录类(Record Class)是Java 17引入的重要语言特性,旨在定义不可变的数据载体。其核心特性是强制要求数据透明不可变性,自动生成equals()、hashCode()、toString()和访问器方法。这一特性显著减少了样板代码,使得数据建模更简洁高效。而加密类(如javax.crypto包中的Cipher、KeyGenerator等)则是Java平台提供安全功能的关键组件,在Java 17中通过增强算法支持(如新增ChaCha20-Poly13

wAlsezhM的博客 643

php sha1 hmac

sha1 算法 安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准(Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA)。对于长度小于2^64位的消息,SHA1会产生一个160位(20B)的消息摘要。当接收到消息的时候,这个消息摘要可以用来验证数据的完整性。在传输的过程

2> /dev/null 741

PHP 的 HMAC_SHA1算法 实现

根据RFC 2316(Report of the IAB,April 1998),HMAC(散列消息身份验证码: Hashed Message Authentication Code)以及IPSec被认为是Interact安全的关键性核心协议。它不是散列函数,而是采用了将MD5或SHA1散列函数与共享机密密钥(与公钥 /私钥对不同)一起使用的消息身份验证机制。基本来说,消息与密钥组合并运行散列函数

amberom的专栏 1790

使用数字签名实现数据库记录防篡改(Java实现)

本文大纲 一、提出问题 二、数字签名 三、实现步骤 四、参考代码 五、后记 六、参考资料 一、提出问题 最近在做一个项目,需要对一个现成的产品的数据库进行操作,增加额外的功能。为此,需要对该产品对数据库有什么操作进行研究(至于怎么监控一个产品的操作会引发什么数据库操作,以后会详细解说)。本来已经对数据库的操作了如指掌的,无意中发现数据库表里的每条记录都会有这样一...

WGH100817的博客 206

掌握 Java 的安全机制:加密与数字签名

Java 的安全机制为构建可信应用提供了坚实基础,而加密与数字签名是其中的核心支柱。随着安全威胁的不断演变,开发者需持续关注算法演进与框架更新,在便利性与安全性间找到平衡点。未来,同态加密、区块链等新技术将进一步拓展 Java 安全生态的边界,为企业级应用保驾护航。

潜意识Java的博客 826

HMAC-SHA1签名算法(JAVA和PHP) base64签名算法(PHP)

HMAC 根据RFC 2316(Report of the IAB,April 1998),HMAC(散列消息身份验证码: Hashed Message Authentication Code)以及IPSec被认为是Interact安全的关键性核心协议。它不是散列函数,而是采用了将MD5或SHA1散列函数与共享机密密钥(与公钥/私钥对不同)一起使用的消息身份验证机制。基本来说,消息与密钥组合并运...

风火纶回 5449

HMAC-SHA1签名算法(JAVA和PHP) base64签名算法(PHP)

HMAC 根据RFC 2316(Report of the IAB,April 1998),HMAC(散列消息身份验证码: Hashed Message Authentication Code)以及IPSec被认为是Interact安全的关键性核心协议。它不是散列函数,而是采用了将MD5或SHA1散列函数与共享机密密钥(与公钥/私钥对不同)一起使用的消息身份验证机制。基本来说,消息与密钥组合并运行...

weixin_41996632的博客 2010

Spring Cloud Gateway实现API数字签名与动态加密的完整方案

在微服务架构中,API网关作为流量入口,其安全性至关重要。数字签名技术基于密码学原理,通过HMAC等算法为请求生成唯一“指纹”,确保数据在传输过程中的完整性和不可否认性,能有效防御内容篡改攻击。结合动态加密技术,可对请求路径和参数进行混淆,防止重放攻击与API爬取。这些机制在金融支付、开放平台等高安全要求场景中具有核心价值。本文以Spring Cloud Gateway为例,详细解析如何集成HMAC-SHA256签名、AES动态加密及Redis防重放校验,实现一套集中式、高性能的网关层安全防护方案,为微服务

diyudong4681的博客 345

日志记录如何保证完整性

总的来说,保证日志完整性需要构建一个纵深防御基础在于严格的权限和只追加存储,防止普通篡改。核心在于应用哈希链或数字签名等密码学技术,让篡改行为能被立刻发现。保障在于持续的监控、验证和备份机制,确保整个体系长期可靠运行。通过组合这些策略,可以构建一个高度可信的日志系统,为安全审计和故障排查提供坚实依据。

长期分享 嵌入式系统、方案设计、踩坑排错干货。 持续深耕、持续输出,欢迎同行交流学习,共同进步。 618
上一篇: 分布式系统理论基础 - CAP
LY_ulysses
博客等级 码龄16年 12粉丝 10原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值