惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园_首页
云风的 BLOG
云风的 BLOG
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
C
Check Point Blog
Y
Y Combinator Blog
GbyAI
GbyAI
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
The Hacker News
The Hacker News
S
Securelist
F
Full Disclosure
大猫的无限游戏
大猫的无限游戏
Cyberwarzone
Cyberwarzone
AWS News Blog
AWS News Blog
雷峰网
雷峰网
M
MIT News - Artificial intelligence
C
CERT Recently Published Vulnerability Notes
S
Security @ Cisco Blogs
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
N
News and Events Feed by Topic
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Cloudbric
Cloudbric
P
Palo Alto Networks Blog
Latest news
Latest news
V
V2EX
量子位
T
Tor Project blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
L
LINUX DO - 热门话题
Stack Overflow Blog
Stack Overflow Blog
Hacker News: Ask HN
Hacker News: Ask HN
D
Darknet – Hacking Tools, Hacker News & Cyber Security
博客园 - 叶小钗
H
Hackread – Cybersecurity News, Data Breaches, AI and More
J
Java Code Geeks
Webroot Blog
Webroot Blog
I
InfoQ
N
News | PayPal Newsroom
NISL@THU
NISL@THU
N
News and Events Feed by Topic
Cisco Talos Blog
Cisco Talos Blog
T
The Blog of Author Tim Ferriss
aimingoo的专栏
aimingoo的专栏
Scott Helme
Scott Helme
B
Blog RSS Feed
Google Online Security Blog
Google Online Security Blog
T
Troy Hunt's Blog
MyScale Blog
MyScale Blog
IT之家
IT之家
P
Privacy & Cybersecurity Law Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com

博客园 - tooli

没有技术要求,只需5步就能完成数据分析和图表制作,DuckDB可将数据分析门槛铲平。 在超大数据集下 DuckDB 与 MySQL 查询速度对比 ChatGPT有多强?真的能替代程序员?一起来看看! 在windwos创建的脚本文件在linux环境中无法执行的问题 PHP + Redis 实现定时任务触发 测试PHP几种方法写入文件的效率与安全性 简析小黑是如何盗取cookie登录用户账号 linux学习:curl与netcat用法整理 swoole+websocket+redis实现一对一聊天 使用COOKIE实现登录 VS 使用SESSION实现登录 巧用PHP中__get()魔术方法 用户表分表原理 linux学习:用户管理 linux学习:网络(防火墙)及系统安全相关命令学习 MySQL语句技巧 实习那些事儿 shell 环境下MySQL的基本操作指令总结 linux学习:归档,备份及进程相关命令用法整理 Docker简介以及使用docker搭建lnmp的过程(多PHP版本)
一个'&'引起md5签名不一致问题
tooli · 2018-12-10 · via 博客园 - tooli

有时会遇到这样一个问题,本地和接口在验证数据签名时,明明两端打印出来的两个字符串一模一样,但是md5加密后的两个密文却不一样。
例如:
本地字符串:$str = "a=1&b=2&c=3";
此时将数据请求到接口,接口获取到的数据可能会变成这样:$str = "a=1&b=2&c=3";
那是因为在html中  '&'  就是  '&',而在浏览器中 '&'  只会显示成  '&' ,所以是看不出两个字符串的差别的,需要打印两个字符串的长度才能发现长度不一样。
在使用http传输的过程中,'&' 会被替换成  '&'  进行传输。
这时接口端需要执行 :$str = str_replace("&", "&", $str);
将 '&' 替换成 '&’'然后才能进行md5加密,否则加密验证是不可能通过的。

另外,有时会遇到php的md5与linux的md5sum的得到的签名不一致的问题

PHP签名:php  -r  'echo md5("签名的字符串");'

Linux签名:echo “签名的字符串” | md5sum

PHP最终签名的字符串是:签名的字符串

Linux最终签名的字符串是:签名的字符串\n

因为 linux 的 echo 都会自动带上 \n,所以导致跟php的md5得到的值不一样。

此时应该用:echo -n “签名的字符串” | md5sum

对 echo 加上 -n 参数,让echo在输出字符串时不加上换行符。