密码学入门——HMAC

文章目录

    • 一、什么是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 值作为消息的认证码。

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

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

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

相关文章

Java028——Runtime 类

一、Runtime 类介绍 Runtime 类是JDK 提供的运行时类,该类为 Java 程序提供了与当前运行环境相连接的一个通道,Java 程序可以利用该类对当前的运行环境执行一些简单的操作。 二、Runtime 对象的创建 Runtime 类对象不能使用 new 关键字创建,只能通过 …

jmeter 终端命令执行jmx文件 生成jtl日志文件

终端命令执行jmx文件 生成jtl日志文件, 步骤如下: 步骤1:终端进入jmx文件目录 步骤2:执行命令:jmeter -n -t ****.jmx -l ****.jtl -n 以cli模式(命令行运行模式)运行jmeter -t 需要运行的…

OnlyHome三代金属智能手环|健康、科技齐实现

近年来,人们越来越追求生活的品质与趣味,生活中的一点点小确幸、小惊喜最能让人感受到深深地愉悦。这不,Only&Home三代金属智能手环也带来了惊喜,有了它,健康、科技两手抓,享受生活更自由。 Only&Home三代金属智能手环给人的第一印象是它超高的颜值,延用了二代手环奢华…

收好这5个SVG编辑器,轻松实现高效创作

随着设计工作的不断发展,对SVG图形的需求也逐渐增加,SVG编辑器就随之诞生。可市面上的SVG编辑质量参差不齐,设计师无法第一时间找到适合自己的,于是本文就收集整理了5款相对来说比较好用的SVG编辑器为设计师们推荐,一起…

RocketMQ5.0消息消费<二> _ 消息队列负载均衡机制

RocketMQ5.0消息消费<二> _ 消息队列负载均衡机制 一、消费队列负载均衡概览 RocketMQ默认一个主题下有4个消费队列,集群模式下同一消费组内要求每个消费队列在同一时刻只能被一个消费者消费。那么集群模式下多个消费者是如何负载主题的多个消费队列呢?并且如果有新的消费…

指针面试题详解

目录 前言(数组名的总结): 一、int 型数组和 sizeof 的组合 sizeof计算原理 二、char类型和strlen()组合 三、char*类型和sizeof()组合(有 \0 版本) 四、char*类型和…

LC-931 下降路径最小和(记忆化搜索 ==> 动态规划)

931. 下降路径最小和 难度中等247 给你一个 n x n 的 方形 整数数组 matrix ,请你找出并返回通过 matrix 的下降路径 的 最小和 。 下降路径 可以从第一行中的任何元素开始,并从每一行中选择一个元素。在下一行选择的元素和当前行所选元素最多相隔一列…

从小白到大神之路之学习运维第58天--------Firewalld防火墙

第三阶段基础 时 间:2023年7月12日 参加人:全班人员 内 容: Firewalld防火墙 目录 Firewalld防火墙 一、防火墙 1、netfilter和防火墙管理工具 2、防火墙配置模式 3、Firewalld数据流处理的方式 4、firewalld区域类型 1&#x…

python常用库之colorama (python命令行界面打印怎么加颜色)

文章目录 python常用库之colorama (python命令行界面打印怎么加颜色)背景colorama介绍colorama使用colorama打印红色闪烁打印颜色组合 python常用库之colorama (python命令行界面打印怎么加颜色) 背景 在Python开发项目过程中,为了方便调试代码,经常会…

fastapi初使用,构建自己的api

文章目录 1、安装2、api实现2.1、 app.get("/1)2.2、app.get("/{a})2.3、app.get("/{a}{b}")2.4、函数和api分离 3、运行 原文链接:https://wangguo.site/posts/d98bb3c9.html fastapi 是一个基于 Python 的 API 构建框架,简单且易用…

LLM - DataCollatorForLanguageModeling 样本生成 by transformers

目录 一.引言 二.生成样本 By API 1.样本处理样式 2.DataCollatorForLanguageModeling 2.1 样本准备 2.2 API 生成 三.生成样本 By DIY 1.样本准备 2.data_colloator 实现 3.使用自定义 data_colloator 四.总结 一.引言 前面我们讲了 Baichuan7B 的 lora 微调步骤&a…

详解sentinel使用

目录 1.概述 2.下载安装 3.应用托管 4.流量控制 4.1.流控规则 4.2.流控模式 4.2.1.直接模式 4.2.2.关联模式 4.2.3.链路模式 4.3.流控效果 4.3.1.预热 4.3.2.排队等待 5.降级 5.1.降级规则 5.2.降级策略 5.2.1.RT 5.2.2.异常比例 5.2.3.异常数 1.概述 senti…