当前位置: 首页 > news >正文

PHP的HMAC_SHA1和HMAC_MD5算法方法

很多做对接的小伙伴们都会遇到签名加密的问题,常用的就是hmac_sha1加密和hmac_md5加密,最开始用的是sha1加密,后来用到了md5加密,我以为直接把sha1改为md5就好了,结果试来试去跟文档提示的示例结果都对不上,最后经过查询搜索终于得到了正确的方法,现在把两种加密方法分享给大家

function do_hmac_sha1($str, $key) {$signature = "";if (function_exists('hash_hmac')) {$signature = base64_encode(hash_hmac("sha1", $str, $key, true));} else {$blocksize = 64;$hashfunc = 'sha1';if (strlen($key) > $blocksize) {$key = pack('H*', $hashfunc($key));}$key = str_pad($key, $blocksize, chr(0x00));$ipad = str_repeat(chr(0x36), $blocksize);$opad = str_repeat(chr(0x5c), $blocksize);$hmac = pack('H*', $hashfunc(($key ^ $opad) . pack('H*', $hashfunc(($key ^ $ipad) . $str))));$signature = base64_encode($hmac);}return $signature;
}
function do_hmac_md5($data, $key) {if (function_exists('hash_hmac')) {return hash_hmac('md5', $data, $key);}$bytelen = 64;// byte length for md5if (strlen($key) > $bytelen) {$key = pack('H*', md5($key));}$key = str_pad($key, $bytelen, chr(0x00));$ipad = str_pad('', $bytelen, chr(0x36));$opad = str_pad('', $bytelen, chr(0x5c));$k_ipad = $key ^ $ipad;$k_opad = $key ^ $opad;return md5($k_opad . pack('H*', md5($k_ipad . $data)));
}

http://www.lryc.cn/news/522653.html

相关文章:

  • 二进制/源码编译安装mysql 8.0
  • 2025-1-15-十大经典排序算法 C++与python
  • 头盔识别技术
  • DeepSeek-v3在训练和推理方面的优化
  • 将 AzureBlob 的日志通过 Azure Event Hubs 发给 Elasticsearch(3 纯python的经济方案)
  • 1️⃣Java中的集合体系学习汇总(List/Map/Set 详解)
  • 闪豆多平台视频批量下载器
  • 深入解析:如何用Java爬取淘宝分类详情接口(cat_get)
  • 语音识别的预训练模型
  • element-ui制作多颜色选择器
  • JVM体系结构
  • wandb使用遇到的一些问题
  • Java中的继承
  • Cadence笔记--原理图导入PCB
  • 从AI生成内容到虚拟现实:娱乐体验的新边界
  • 【Linux】gdb_进程概念
  • 安全类脚本:拒绝ssh暴力破解
  • Android15源码编译问题处理
  • 图解Git——分布式Git《Pro Git》
  • Linux内核编程(二十一)USB应用及驱动开发
  • 什么是数据仓库?
  • 计算机网络 (48)P2P应用
  • SK海力士(SK Hynix)是全球领先的半导体制造商之一,其在无锡的工厂主要生产DRAM和NAND闪存等存储器产品。
  • FunASR 在Linux/Unix 平台编译
  • git操作(Windows中GitHub)
  • 物联网网关Web服务器--Boa服务器移植与测试
  • vue3学习日记8 - 一级分类
  • 前端实习第二个月小结
  • 深入了解卷积神经网络(CNN):图像处理与深度学习的革命性技术
  • b站视频(网页加客户端)+本地视频 生成回链