文章目录

  • 一、什么是HMAC
  • 二、HMAC的步骤

一、什么是HMAC

HMAC是一种使用单向散列函数来构造消息认证码的方法(RFC2104),其中 HMAC的H就是Hash的意思。

HMAC 中所使用的单向散列函数并不仅限于一种,任何高强度的单向散列函数都可以被用于HMAC,如果将来设计出新的单向散列函数,也同样可以使用。

使用SHA-1、SHA-224、SHA-256、SHA-384、SHA-512所构造的HMAC,分别称为HMAC-SHA1、HMAC-SHA-224、HMAC-SHA-256、HMAC-SHA-384、HMAC-SHA-512。

二、HMAC的步骤


下面是 HMAC 的步骤:

  1. 选择一个适当的哈希函数 H,通常使用 SHA-256、SHA-384 或 SHA-512 等安全的哈希函数。
  2. 确定一个密钥 K,长度可以是任意值。如果密钥长度不足 H 函数的输入块长度,则需要对密钥进行填充。
  3. 对密钥进行预处理。如果密钥长度超过 H 函数的输入块长度,则需要将 K 哈希成 H 函数的输出长度。
  4. 对消息 M 进行填充,使其满足 H 函数的输入块长度要求。
  5. 将处理后的密钥 K 和填充后的消息 M 输入到 HMAC 算法中。
  6. HMAC 算法根据以下公式计算哈希值:
    HMAC(K, M) = H((K ⊕ opad) || H((K ⊕ ipad) || M))
    其中,“||”表示拼接,opad 和 ipad 是固定的填充值,分别为 0x5c 和 0x36。
    输出 HMAC 值作为消息的认证码。

注意,为了提高安全性,每个消息都应该使用不同的密钥。如果多个消息使用相同的密钥,则可能会存在安全隐患。

密码学入门——HMAC相关推荐

  1. 【学习笔记】密码学入门(2) 单向散列函数,消息认证码,数字签名,证书

    [学习笔记]密码学入门(2) 单向散列函数,消息认证码,数字签名,证书 学习笔记 2 – 混合密码系统 在密码学入门(1)中提到了基本的密码形式,对称密码和公钥密码以及混合密码系统. 这一部分将学习到 ...

  2. 密码学入门(6):消息认证码

    密码学入门(6):消息认证码 文章目录 密码学入门(6):消息认证码 什么是消息认证码? 消息认证码的实现方式 HMAC 认证加密 重放攻击 防御重放攻击的方式 消息认证码无法解决的问题 参考 上次讲 ...

  3. 【网络信息安全】密码学入门笔记

    密码学入门 主要内容与重点 一.传统密码学 二.现代密码学 三.理论不可破解和计算不可破解的加密算法 密码系统的基本要求和设计原则 一次一密密码系统 一次一密码系统的算法 一次一密密码系统举例 无法破 ...

  4. 趣味密码学入门--cryptohack

    趣味密码学入门–cryptohack 前言 Awesome CTF中发现了一个有趣的密码学挑战平台–cryptohack,小白的我通过做题来学习密码学知识吧 cryptohack平台官网:https: ...

  5. 密码学入门(3):分组密码的模式

    密码学入门(3):分组密码的模式 文章目录 密码学入门(3):分组密码的模式 分组密码与流密码 ECB模式 CBC模式 CFB模式 OFB模式 CTR模式 应该使用那种模式 参考 DES和AES都属于 ...

  6. 密码学入门(2):对称密码

    密码学入门(2):对称密码 文章目录 密码学入门(2):对称密码 历史上的密码 凯撒密码 简单替换密码 一次性密码本 DES 三重DES AES 应该使用哪种密码 参考 对称密码是指加密和解密都使用相 ...

  7. 密码学入门:几种简单的密码

    密码学入门:几种简单的密码 一.维吉尼亚密码       维吉尼亚密码引入了"密钥"的概念,即根据密钥来决定用哪一行的密表来进行替换,以此来对抗字频统计.假如以上面第一行代表明文字 ...

  8. 豆瓣评分9.4,跪着推荐这本密码学入门第一书

    "密码"这个词,总是让人难以捉摸,有时候你认为它很简单,其实它却包含着几种看似差不多但本质上却完全不同的含义,还真是不简单. 那么"密码"到底是什么呢?它其实是 ...

  9. 工程师男友如何反窃听?趣聊密码学入门科普

    阿里妹导读:谁都不想在通信过程中被别人"窃取"小秘密.本文借助一对情侣与八卦女.猥琐男的斗智故事,为大家讲述科普密码学基础知识.既有料又有趣,深入浅出,相信你会喜欢. 背景 事情是 ...

最新文章

  1. 力扣刷题流程-参考别人的经验觉得很有道理的
  2. HTML5_02之视频、音频、Canvas
  3. repo-关于URL编码
  4. 我混了大半辈子,忽然成了拆二代
  5. Python生态概览(一):数据分析库、数据可视化库、文本处理库、机器学习库、深度学习库
  6. 用户控件与自定义控件
  7. CGO磁盘管理For流星无语
  8. 面试题10.3-变态跳台阶
  9. 特征工程(六): 非线性特征提取和模型堆叠
  10. jchdl - GSL实例 - LogicalLeft
  11. 使用百度云API进行人脸对比
  12. Matlab分析系统的动态性能
  13. 2.Deep Crossing: Web-Scale Modeling without Manually Crafted Combinatorial Features论文核心解读以及代码实现
  14. SpringBoot集成onlyoffice实现word文档编辑保存 [ 转载 ]
  15. 制作openstack镜像(qcow2格式的win10系统)
  16. 【Java项目实战】CRM客户关系管理系统
  17. jquery-question
  18. 特定领域知识图谱知识融合方案(实体对齐)论文合集
  19. 探索AI助手ChatGPT实际应用场景
  20. h5模型转化为pb模型,代码及排坑

热门文章

  1. java mockserver搭建_自动化测试基础设施(一)——为功能测试构建通用mock server系统...
  2. 中汇(天津)税务师事务所
  3. 11.CNN实现真实猫狗图片分类
  4. 武汉理工大学计算机专业英语,给大家讲个笑话,武汉理工外语专业400分以上的28人...
  5. “一盘货卖全球”之后,天猫今年将推出国货“出海2.0版”
  6. python+PyQt5基础详细教程
  7. 【2021】03 C++
  8. Oppo市场认领应用之OppoSignVerify.apk签名流程
  9. 中点和中值滤波的区别_组合导航系列文章(十二):滤波器基本原理
  10. 国产特斯拉32万8,造车新势力不怕他?