zoukankan      html  css  js  c++  java
  • 关于消息认证码

    我的认识

    • 消息认证码
      英文为Message Authentication Code,也称消息识别码等不同称呼。其主要功能是验证消息的真实性。
      消息认证模型如下:
      屏幕快照 2020-02-13 下午1.56.44

    • HMAC(Hash-based Message Authentication Code)
      HMAC是一种使用单向散列函数构建MAC的方法,其中H就是Hash的意思。
      HMAC中所使用的单向散列函数并不仅限于一种,任何高强度的单向散列函数都可以被用于HMAC,如果将来设计出的新的单向散列函数,也同样可以使用。
      使用SHA-1、SHA-224、SHA-256、SHA-384、SHA-512所构造的HMAC,分别称为HMAC-SHA1、HMAC-SHA-224、HMAC-SHA-384、HMAC-SHA-512。
      各消息摘要长度不同,

    • 输入文本和密钥,输出固定长度的消息摘要。这段消息摘要是途中的认证码。

    HMAC算法是一种基于密钥的报文完整性的验证方法 ,其安全性是建立在Hash加密算法基础上的。它要求通信双方共享密钥、约定算法、对报文进行Hash运算,形成固定长度的认证码。通信双方通过认证码的校验来确定报文的合法性。 HMAC算法可以用来作加密、数字签名、报文验证等 。

    HMAC的算法定义

    HMAC算法是一种执行“校验和”的算法,它通过对数据进行“校验”来检查数据是否被更改了。在发送数据以前,HMAC算法对数据块和双方约定的公钥进行“散列操作”,以生成称为“摘要”的东西,附加在待发送的数据块中。当数据和摘要到达其目的地时,就使用HMAC算法来生成另一个校验和,如果两个数字相匹配,那么数据未被做任何篡改。否则,就意味着数据在传输或存储过程中被某些居心叵测的人作了手脚。

    HMAC算法的定义用公式表示如下:

    HMAC(K,M)=H((K’⊕opad)∣H((K’⊕ipad)∣M))

    算法步骤

    (1) 在密钥K后面添加0 或者 对密钥K用H进行处理 来创建一个字长为B的字符串。(例如,如果K的字长是20字节,B=64字节,则K后会加入44个零字节0x00;如果K的字长是120字节,B=64字节,则会用H作用于K后产生64字节的字符串)

    (2) 将上一步生成的B字长的字符串与ipad做异或运算。

    (3) 将数据流text填充至第二步的结果字符串中。

    (4) 用H作用于第三步生成的数据流。

    (5) 将第一步生成的B字长字符串与opad做异或运算。

    (6) 再将第四步的结果填充进第五步的结果中。

    (7) 用H作用于第六步生成的数据流,输出最终结果 。

  • 相关阅读:
    496. 下一个更大元素 I
    240. 搜索二维矩阵 II
    java反射之ObjectAnalyzer
    PHP导出excel文件的多种方式
    git获取公钥和私钥以及常用的命令
    PHP PSR-2 代码风格规范
    phpStrom安装PHP_CodeSniffer检查代码规范
    常见PHP安全网站漏洞及防范措施
    Oracle中创建主键并在Spring data JPA中使用
    JPA自定义查询中报错:缺失右括号
  • 原文地址:https://www.cnblogs.com/khldragon/p/guan-yu-xiao-xi-ren-zheng-ma.html
Copyright © 2011-2022 走看看