原标题:PHP安全:MAC和HMAC

消息认证码(Message Authentication Code,MAC)在发送消息的基础上通过Key生成加密摘要,通常被用于检测消息在传输过程中是否被篡改。MAC消息认证过程如图1所示。

图1 MAC消息认证过程

在图1所示的消息认证过程中,消息的发送方通过密钥和MAC算法生成MAC数据标记,然后将消息和MAC标签发送到接收方。消息接收方依次使用相同的密钥通过相同的MAC算法运行传输的消息部分,产生MAC数据标签。接收器将在传输中接收的MAC标签与自己生成的MAC标签进行比较。如果它们相同,则接收方可以认为消息在传输期间未发生改变或篡改。

同时,为了防止重放攻击,消息本身必须包含确保该相同消息仅能被发送一次的数据,例如使用时间戳、序列号或使用一次MAC。

散列消息身份验证码(Hashed Message Authentication Code,HMAC)是在MAC算法基础上基于加密散列算法实现的。

在下面的PHP代码中使用hash_hmac函数来使用MD5方式给原始消息生成散列值。

echo hash_hmac('md5','PHP核心安全高级指南','php_secret_key');

// 执行结果为:218c92193edf5048ff08217db2709db2

?>

如果需要给文件生成散列值,可使用hash_hmac_file函数,在下面的示例代码中使用SHA256算法生成散列值。

echo hash_hmac('sha256','/tmp/PHP核心安全高级指南.pdf','php_secret_key');

// 执行结果为:2fa57221aac5683c58f4eaae16e35b5da9eaddab57c6bb539d4384c2dfccd0b8

?>

如果要知道hash_hmac支持哪些散列算法,可以通过执行hash_hmac_algos或hash_algos函数来获取hash_hmac通常支持的散列算法,如表1所示。

表1 hash_hmac支持的散列算法返回搜狐,查看更多

责任编辑:

php hmac,PHP安全:MAC和HMAC相关推荐

  1. 转:Hash, MAC,HMAC说明

    from: http://www.cnblogs.com/songhan/archive/2012/07/29/2613898.html Hash, MAC,HMAC Hash-MD5, SHA-1, ...

  2. 两句话说明白 MAC和HMAC的区别

    直接上结论: 1.HMAC技术可是说是MAC技术的一种,HMAC使用两轮散列而MAC只使用一轮散列. 2.HMAC比MAC更安全. 使用哈希函数,更改消息(不知密钥)并获得另一个有效的MAC相对容易, ...

  3. 消息验证码 MAC (HMAC、CMAC) 原理、特点

    MAC学习笔记 1. MAC的基本思想 消息验证码,利用密钥来生成一个固定长度的短数据块,并将该数据块附加到消息之后.假定通信双方比如A和B,共享密钥K.若A和B发送消息时,则A计算MAC,它是消息和 ...

  4. HMAC和密钥导出(HMAC and Key Derivation)

    简单地计算hash_func(key+msg)以获得MAC(消息认证码)被认为是不安全的.建议改用HMAC算法,例如HMAC-SHA256或HMAC-SHA3-512或其他安全MAC算法. 什么是HM ...

  5. HASH和HMAC(8):HMAC算法原理

    HMAC是密钥相关的哈希运算消息认证码(Hash-based Message Authentication Code)的缩写,在1997发布的RFC2104中被公布.它可以与任何迭代HASH函数(SH ...

  6. MAC and HMAC

    MAC 简介:通过密钥+算法生成digest(也叫MAC),传送给服务器 消息认证码(带密钥的Hash函数):密码学中,通信实体双方使用的一种验证机制,保证消息数据完整性的一种工具. 安全性依赖于Ha ...

  7. MAC、HMAC、CBC-MAC、OMAC的介绍

    来源:CSDN  原文:https://blog.csdn.net/l243224118/article/details/83932434 作者:_你微笑时很美 MAC(消息认证码)解读 背景 在开放 ...

  8. HASH、MAC、HMAC学习

    Hash 是一种从任何一种数据中创建小的数字"指纹"的方法. 散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来. 如果两个散列值是不相同的(根据同一函数),那么 ...

  9. 国密消息鉴别码学习笔记 ——含GB/T 15852和HMAC(第2章 基于分组密码的MAC)

    国密消息鉴别码学习笔记  --含GB/T 15852和HMAC 摘要:本文档对我国标准规定的消息鉴别码的生成算法进行了简要介绍,包括算法生成步骤,注意事项等.我国的相关标准包括GB/T 15852.1 ...

最新文章

  1. 数据泄露报告称,1/5 的外部数据泄露事件涉及政府背景(附下载)
  2. python 调用 javascript函数
  3. 「Excel技巧」Excel中根据某列的值去汇总另外一列的值
  4. dos 命令与 C++的联合作业,有点意思~
  5. Notepad++的使用
  6. 2019年末逆向复习系列之淘宝M站Sign参数逆向分析
  7. 太平鸟上云 推动中国服饰行业新零售转型
  8. cdh hive on spark_Flink 与 Hive 的磨合期
  9. Spring中AOP注解实现
  10. matlab2c使用c++实现matlab函数系列教程-logspace函数
  11. octave与matlab语法,Octave与Matlab
  12. 昨天发生的四件大事!
  13. java我们一起打雪仗_一起打雪仗作文(通用5篇)
  14. 腾达u2无线网卡驱动Linux,腾达U2无线网卡驱动
  15. faker造假数据的使用
  16. openstack glance-api-paster
  17. 学计算机要数学和英语怎么说,高中数学和英语有点恼火。但本人大学想学计算机,就是不知道英语和数学与计算机专业有什么必要联络吗?...
  18. android10 禁止下拉状态栏
  19. 【FXCG】美联储政策上升不确定 美元指数波动加大
  20. 性的短暂而致真情永失

热门文章

  1. C# /.net 返回上一级目录
  2. php判断股票涨停,股票涨停反复打开 涨停后看什么(图解)
  3. 冗余-安全设计的基石
  4. 基于ASP.NET的企业人事管理系统
  5. ModuleNotFoundError: No module named ...
  6. 老板是个黑心狼(1)骗--“骂”老板(7)
  7. uni-app实战之社区交友APP(11)API环境搭建和登录API开发
  8. python AES CFB-128加密
  9. Java数据结构与算法-SingleLinkedList单向链表插入,删除,查找,修改详解及代码
  10. Linux之旅 13:磁盘配额与高级文件管理