有時會遇到這樣一個問題,本地和接口在驗證數據簽名時,明明兩端打印出來的兩個字符串如出一轍,可是md5加密後的兩個密文卻不同。
例如:
本地字符串:$str = "a=1&b=2&c=3";
此時將數據請求到接口,接口獲取到的數據可能會變成這樣:$str = "a=1&b=2&c=3";
那是由於在html中 '&' 就是 '&',而在瀏覽器中 '&' 只會顯示成 '&' ,因此是看不出兩個字符串的差異的,須要打印兩個字符串的長度才能發現長度不同。
在使用http傳輸的過程當中,'&' 會被替換成 '&' 進行傳輸。
這時接口端須要執行 :$str = str_replace("&", "&", $str);
將 '&' 替換成 '&’'而後才能進行md5加密,不然加密驗證是不可能經過的。html