PHP 字符串中包含$符号引起的典型错误
如下的PHP代码
hash_hmac("sha1", "helloworld", "mykey")
返回结果是:
74ae5a4a3d9996d5918defc2c3d475471bbf59ac
使用我之前文章中所写的java版本的hmac_sha1函数可以得到同样的结果.
下面尝试一个复杂而更真实的字符串:
hash_hmac("sha1", "helloworld", "PRIE7$oG2uS-Yf17kEnUEpi5hvW/#AFo")
返回结果是:
e98bcc5c5be6f11dc582ae55f520d1ec4ae29f7a
java版本返回:
c19fccf57c613f1868dd22d586f9571cf6412cd0
两者应该相等,但实际上并非如此. 难道是java算法不匹配?
仔细观察,原来是PHP的$符号的特殊性引起的, 由于PHP双引号会解析$符号,导致
PRIE7$oG2uS-Yf17kEnUEpi5hvW/#AFo变成了PRIE7-Yf17kEnUEpi5hvW/#AFo(如果$oG2uS未定义)
把双引号换成单引号,PHP即可得到和java相同的结果.
iefreer
相关推荐
zyyjay 2020-11-09
xuebingnan 2020-11-05
samtrue 2020-11-22
stefan0 2020-11-22
yifangs 2020-10-13
songshijiazuaa 2020-09-24
hebiwtc 2020-09-18
天步 2020-09-17
83911535 2020-11-13
whatsyourname 2020-11-13
zhouyuqi 2020-11-10
Noneyes 2020-11-10
mathchao 2020-10-28
王志龙 2020-10-28
wwwsurfphpseocom 2020-10-28
diskingchuan 2020-10-23
savorTheFlavor 2020-10-23