Hmac的算法表达式是
更新时间:2026-08-18 21:12:51 栏目: 早教
更新时间:2026-08-18 21:12:51 栏目: 早教
HMAC(Hash - based Message Authentication Code)即基于哈希的消息认证码,它的算法表达式定义如下:
假设 是一个密码学哈希函数(如SHA - 1、SHA - 256等), 是共享密钥, 是要认证的消息。
首先确定块大小 和输出大小
哈希函数 有一个内部块大小 (以字节为单位)。例如,对于SHA - 256, 字节。
哈希函数 的输出大小为 字节。例如,SHA - 256的输出大小 字节。
处理密钥
如果密钥 的长度大于块大小 ,则将 作为哈希函数的输入进行计算,即 ,得到新的密钥 ,使其长度符合要求。
如果密钥 的长度小于块大小 ,则在 的左边填充0字节,直到长度达到 字节,记为 。
计算内部和外部填充值
定义内部填充值 ,它是一个 字节的常量,每个字节的值为 。
定义外部填充值 ,它是一个 字节的常量,每个字节的值为 。
计算中间结果
计算 ,这里 表示按位异或操作。
将消息 附加到 之后,即 (这里 表示字符串连接操作)。
计算 ,得到中间哈希值 。
计算最终的HMAC值
计算 。
将中间哈希值 附加到 之后,即 。
最终的HMAC值为 。
用伪代码表示如下:
function HMAC(K, M) { B = block size of H L = output size of H if (length(K) > B) { K = H(K) } K_p = left - pad K with 0s until length(K_p) == B ipad = byte string of B bytes with value 0x36 opad = byte string of B bytes with value 0x5C Si = K_p XOR ipad SiM = Si concatenate M h_1 = H(SiM) So = K_p XOR opad SoH = So concatenate h_1 return H(SoH) }
不同的编程语言都有相应的库来实现HMAC,例如在Python中可以使用 hmac 模块,在Java中可以使用 javax.crypto.Mac 类来方便地计算HMAC值。
上一篇 : 变压器的负载率的具体计算公式?
下一篇 : 什么是截位法
100cc等于多少毫升
›什么叫做内业?什么叫做外业?
›圆锥体锥度计算方法
›5分之1是百分之多少?
›rely的各种形式名词,形容词,副词……
›6米=多少分米
›下雨天的心情经典句子适合发朋友圈的短句 (56条)
›污污的文章让人起反应的句子500字 (56条)
›正能量的句子 人生感悟 努力工作 (56条)
›眼前是一条清澈的小河把句子写具体 (56条)
›微信拍一拍搞笑后缀的句子怎么设置 (56条)
›感谢老师对孩子的教育和辛苦的句子 (56条)
›up-country
›econ
›bbb
›gogo
›1.2.3yellow
›foobar2000
›广东疫情最新新增/广东疫情最新新增数据
›广东新增20例本土确诊病例(广东新增10例本土确诊病例轨迹)
›德克萨斯州流感A型与新冠病例双双攀升,疫情再添隐忧
›薏米可以和绿豆一起煮吗
›排骨汤怎么炖最有营养
›卷发棒卷发教程视频
›