查看“︁HMAC”︁的源代码
←
HMAC
跳转到导航
跳转到搜索
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
{{noteTA |G1=IT }} {{Expand English}} [[File:SHAhmac.svg|thumb|400px|SHA-1 HMAC產生過程]] '''HMAC''' (有时扩展为 {{lang-en|keyed-hash message authentication code}}, '''金鑰雜湊訊息鑑別碼''', 或 {{lang-en|hash-based message authentication code}},'''雜湊訊息鑑別碼'''),是一種通過特別計算方式之後產生的[[訊息鑑別碼]](MAC),使用[[密碼雜湊函數]],同時結合一個加密金鑰。它可以用來保證資料的完整性,同時可以用來作某個訊息的[[身份驗證]]。 ==定義== 根據RFC 2104,HMAC的數學公式為: <math> \textit{HMAC}(K, m) = H \Bigl( (K' \oplus opad) \;||\; H \bigl( (K' \oplus ipad) \;||\; m \bigr) \Bigr) </math> 其中: :''H''為密碼[[雜湊函數]](如[[SHA家族]]) :''K''為[[密鑰]](secret key) :''m''是要认证的消息 :''K'''是从原始密钥''K''导出的另一个秘密密钥(如果K短于散列函数的输入块大小,则向右[[填充 (密码学)|填充]](Padding)零;如果比该块大小更长,则对K进行散列) :|| 代表[[串接]] :⊕ 代表[[異或]](XOR) :''opad'' 是外部填充(0x5c5c5c…5c5c,一段[[十六进制]]常量) :{{Sic|''ipad''|hide=yes}} 是内部填充(0x363636…3636,一段十六进制常量) ==实现== 下面的伪代码展示了如何实现HMAC。当使用以下散列函数之一时,块大小为64(字节):SHA-1、MD5、RIPEMD-128/160<ref>RFC 2104, section 2, "Definition of HMAC", page 3.</ref>。 '''function''' hmac (key, message) '''{''' '''if''' (length(key) > blocksize) '''{''' key = hash(key) <span style="color: green;">''// keys longer than blocksize are shortened''</span> '''}''' '''if''' (length(key) < blocksize) '''{''' <span style="color:green;">''// keys shorter than blocksize are zero-padded (where ''∥'' is concatenation)''</span> key = key ∥ [0x00 * (blocksize - length(key))]<span style="color:green;">'' // Where * is repetition.''</span> '''}''' o_key_pad = [0x5c * blocksize] ⊕ key <span style="color: green;">''// Where blocksize is that of the underlying hash function''</span> i_key_pad = [0x36 * blocksize] ⊕ key <span style="color: green;">''// Where ⊕ is exclusive or (XOR)''</span> '''return''' hash(o_key_pad ∥ hash(i_key_pad ∥ message)) <span style="color: green;">''// Where ''∥'' is concatenation''</span> '''}''' ==相關條目== *[[SHA家族]] ==参考文献== {{reflist}} {{密碼學|hash}} {{DEFAULTSORT:HMAC}} [[Category:訊息鑑別碼]]
该页面使用的模板:
Template:Expand English
(
查看源代码
)
Template:Lang-en
(
查看源代码
)
Template:NoteTA
(
查看源代码
)
Template:Reflist
(
查看源代码
)
Template:Sic
(
查看源代码
)
Template:密碼學
(
查看源代码
)
返回
HMAC
。
导航菜单
个人工具
登录
命名空间
页面
讨论
不转换
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
特殊页面
工具
链入页面
相关更改
页面信息