歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

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

Copyright © Linux教程網 All Rights Reserved