【密码学】HMAC与HS256算法

news2024/9/24 15:26:47

哈希算法加盐

传统的哈希算法:

digest = hash(input)

因为相同的输入会产生相同的输出,所以想要加盐,加盐的目的就在于,使输入有所变化:

digest = hash(salt + input)

这个salt可以看作是一个额外的“认证码”,同样的输入,不同的认证码,会产生不同的输出。因此,要验证哈希值,必须同时提供“认证码”

HMAC算法

HMAC以某种哈希算法为部件

HMAC算法是一种基于密钥的消息认证码算法,全称是Hash-based Message Authentication Code

HMAC算法的输入是消息和密钥,中间会使用到某种哈希算法,输出是MAC值

HMAC算法需要某种哈希算法作为部件,即下图中的“单向散列函数”
HMAC相当于,基于密钥,给哈希算法“加了盐”

在这里插入图片描述

HMAC的应用

在这里插入图片描述

HMAC-SHA256算法

参考:https://fileem.com/getting-started-from-zero-hmac-sha256

HMAC-SHA256算法,是使用了SHA-256的HMAC算法。

依据HMAC和SHA-256,HMAC-SHA256算法的明文分组长度B为512-bit,密钥K长度任意(最小推荐长度为256-bit,一般应大于512-bit),输出的摘要值为256-bit。

HMAC-SHA256步骤

HMAC-SHA256算法加密步骤如下图所示:
①. 密钥填充。若密钥比SHA-256算法的分组长度B(512-bit)短,则需在末尾填充0,直到其长度达到单向散列函数的分组长度为止。若密钥比分组长度长,则要用SHA-256算法求出密钥的散列值,然后将这个散列值作为新的密钥;
②. 内部填充。将填充后的密钥与被称为ipad的序列进行异或运算,所形成的值为ipadkey。ipad是将00110110这一序列不断循环反复直到达到分组长度;
③. 与消息组合。将ipadkey与消息组合,也就是将ipadkey附加在消息的开头。
④. 计算散列值。将3的结果输入SHA-256函数,并计算出散列值。
⑤. 外部填充。将填充后的密钥与被称为opad的序列进行异或运算,所形成的值为opadkey。opad是将01011100这一序列不断循环反复直到达到分组长度。
⑥. 与散列值组合。将4的散列值拼在opadkey后面。
⑦. 计算散列值。将6的结果输入SHA-256函数,并计算出散列值,这个散列值就是最终的摘要内容。

在这里插入图片描述

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

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

相关文章

ChatGPT 使用 API 进行 Postman 调用测试

当获得 ChatGPT 的 API Key 以后,想使用 Postman 来进行一下调用。调用的方法为 POST。需要设置几个参数。我们希望使用的 EndPoint 是:API EndPoint访问使用的 EndPoint 是:https://api.openai.com/v1/completions授权方法授权的方法使用的是…

FortiGate FGCP HA 配置文档

概述 FortiOS 提供 6 种冗余解决方案,工业标准的 VRRP 和 5 种专有的解决方案: FortiGate Cluster Protocol (FGCP) high availability,FortiGate Session Life Support Protocol (FGSP) high availability,Session-Aware Load …

Spring Cloud LoadBalancer(负载均衡)

简介 了解过Spring Cloud,就知道,之前Spring Cloud中默认的负载均衡组件为ribbon,ribbon是Netflix开源的组件,但是目前已经停止更新了。所以Spring官方推出了Spring Cloud LoadBalancer。而且Spring Cloud LoadBalancer是目前唯一…

win11下通过qemu 安装win10 arm系统

安装qemu QEMU for Windows – Installers (64 bit) 我选了最新的20221230的版本,我将其安装在c:\qemu7\下,另外在环境变量中加入这个路径 然后在别的盘上建立一个路径,名称随意,不要有中文和空格即可,我放在了e:\qe…

电脑蓝屏提示错误代码0X000000B4怎么办?

电脑蓝屏可以说是Windows的一个常见问题了。蓝屏状况数不胜数,关键还得看是何终止代码。 如果电脑蓝屏,提示错误代码0X000000B4是什么意思?这是由于Windows不能启动显卡驱动,从而无法进入图形界面。 蓝屏错误0X000000B4可能由驱…

docker搭建redis集群(Cluster版三主三从)

docker搭建redis集群(Cluster版三主三从编写脚步建立配置redis的配置文件启动六个redis服务创建cluster集群测试集群的高可用编写脚步建立配置redis的配置文件 建立配置文件脚本 vim redis.shfor port in $(seq 1 6); \ do \ mkdir -p /volumn/redis/node-${port}/conf touch…

怎么修复老照片?这三个修复方法让你轻松学会

大家在翻看以前的照片时,有没有发现有一些照片的颜色泛黄,内容也变得有些模糊不清了,遇到这种情况应该怎么办呢?不知道的小伙伴也不要着急,今天我就给大家分享几个模糊老照片修复教程,教会大家如何修复老照…

一直没明白的 HTTPS,今天必须让你懂了~

大家第一次接触 HTTPS 协议的时候是不是和我一样,非常困惑。 这玩意概念又多又繁琐。尤其是里面的公钥私钥啥的。 当时就特别想知道,为什么用公钥加密却不能用公钥解密? 看完这篇文章你会弄明白,同时还会解锁很多HTTPS里的细节…

1.所有被new出来的实例都是存放在堆里的吗?Android面经

问题: 所有被new出来的实例都是存放在堆里的吗? 相关知识点: 堆和栈、标量替换、栈上分配、逃逸分析 思考: 首先,这样问了,答案肯定是不是所有new出来的实例都存放在堆里,不然下面没法继续问了…

MODBUS转PROFINET网关在冷水机项目中应用

在电镀行业中,需要频繁用到冷水机,电镀产品在焊接过程中会产生大量的热量,这些热量若不及时散除,则有可能会导致待加工的电镀产品发生大变形,本案例的目的是通过微硬创新MODBUSRTU转PROFINET网关连接冷水机和PLC&#…

安卓玩机搞机技巧综合资源-----修复基带 改串码 基带qcn 改相关参数 终结贴

有需要了解这方面常识的友友梦可以先参阅我这几个帖子 请点击跳转 基带qcn的备份与写入相关 格机 nv报错 高通联机修改IMEI等参数的相关解析 关于高通QPST平台功能和选项的一些简单说明 基带qcn的备份与写入相关 格机 nv报错 以上几个帖子可以初步了解基带 串码等参数方面…

面试官:如何用Excel进行预测分析?这操作绝了!

【面试题】一个社交APP, 它的新增用户次日留存、7日留存、30日留存分别是52%、25%、14%。请模拟出来,每天如果日新增6万用户,那么第30天,它的日活数会达到多少?请使用Excel进行分析。【分析思路】第1日(次日)留存用户数第1日新增用…

筛选用户权限子集记录

【问题】Is there a way to use the $map operator in a regular Mongo document query (or aggregate \$match which I believe is the same thing).What I’m trying to do is thus: Given an set of sets, return the document if any of the sets is a subset of a paramet…

SpringBoot+VUE前后端分离项目学习笔记 - 【12 Vue使用路由】

整体代码结构 Manage.vue HomeView.vue改名为Manage.vue,用以管理其他view页面【通过import 】 <template><el-container style"min-height: 100vh"><el-aside :width"sideWidth px" style"box-shadow: 2px 0 6px rgb(0 21 41 / 3…

年终盘点:元宇宙产业委多项成果荣登元宇宙行业影响力榜单

在经过了2021年元宇宙概念落地和普及后&#xff0c;2022年成为元宇宙相关产业井喷式发展的一年。元宇宙产业委在2022年多项成果荣登行业影响力榜单。 2021-2022元宇宙科技传播图书影响力榜发布&#xff0c;元宇宙产业委好书上榜 2022年9月&#xff0c;两办印发《关于新时代进一…

Internet Download Manager2023最新永久版下载及功能介绍

提到下载工具&#xff0c;大多数国人映入脑海的或许是迅雷。没错&#xff0c;当今随着互联网的迅猛发展&#xff0c;不少早期积累大量用户的国内外下载工具尽显疲态&#xff0c;止步不前&#xff0c;纷纷掉队&#xff0c;如网络快车、FDM、脱兔等等。一款名叫Internet Download…

Anaconda(python)安装教程以及创建新环境

文章目录一. Anaconda简介二. Anacoda安装1. Anacondad下载2. 安装方式三.通过conda创建新的环境四.conda常用命令一. Anaconda简介 Anaconda介绍&#xff1a;开源的Python发行版本。Anaconda指的是一个开源的Python发行版本&#xff0c;其包含了conda、Python等180多个科学包…

make_shared与new

假设有这么个类&#xff1a; class A {private:int b;public:A(int c):b(c) { cout << "call constructor..." << endl;}~A() { cout << "call destructor..." << endl;}int getValue() { return b;} }; 当创建指向 A 对象的智能…

【测绘程序设计】——附合导线近似平差

附合导线(Connecting Traverse,CT)近似平差是测绘专业九大核心专业基础课——《数字地形测量学》中的重点内容,其程序设计也是测绘学子必修的课程设计之一。本文分享了测绘程序设计——附合导线近似平差(C++/MFC版),相关源代码(完整工程,包含测试数据)及使用示例(结果…

CLion开发环境的完全解析(QT开发?STM32?顺便速通cmake

文章目录下载与安装主题推荐编辑器与clang-format设置鼠标滚轮改变字体大小clang-format的使用我的 .clang-format 配置编译工具链设置编译工具链的添加与解释cmake配置项的添加与解释cmake的使用与实战常用的cmake变量&#xff08;入门&#xff09;常用的cmake命令&#xff08…