加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 教程 > 正文

PHP 字符串中包含$符号引起的典型问题

发布时间:2021-12-14 21:46:59 所属栏目:教程 来源:互联网
导读:如下的PHP代码 hash_hmac(sha1, helloworld, mykey) 返回结果是: 74ae5a4a3d9996d5918defc2c3d475471bbf59ac 使用我之前文章中所写的Java版本的hmac_sha1函数可以得到同样的结果. 下面尝试一个复杂而更真实的字符串: hash_hmac(sha1, helloworld, PRIE7$oG2uS
如下的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

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读