您好,登錄后才能下訂單哦!
這篇文章主要介紹PHP md5函數(shù)的16位字符亂碼怎么辦,文中介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們一定要看完!
php md5 16位字符亂碼的解決辦法:1、對輸出的16字節(jié)的二進(jìn)制轉(zhuǎn)化為十六進(jìn)制;2、通過“substr(md5($str),8,16)”方法來獲得16個字符的md5密文。
亂碼
PHP的md5函數(shù)用于對字符串參數(shù)進(jìn)行md5運(yùn)算,該函數(shù)有兩個參數(shù):
md5 ( string $str [, bool $raw_output = FALSE ] ) : string
第一個參數(shù)是輸入字符串;第二個參數(shù)默認(rèn)為FALSE,設(shè)置為TRUE時可以輸出16位的md5值。
默認(rèn)情況下,
md5(string $str)
會返回:32 字符、十六進(jìn)制數(shù)字形式的散列值。
如果加上第二個參數(shù)md5(string $str,TRUE)
則返回:16字節(jié)長度的原始二進(jìn)制格式的散列值。
由此我們看出,當(dāng)返回16字節(jié)長度(對應(yīng)16個字符,因?yàn)榉螦SCII)的二進(jìn)制格式時,由于瀏覽器對其進(jìn)行了字符化處理,由此就會產(chǎn)生亂碼:
$str = "PHP"; echo "字符串:".$str."<br>"; echo "TRUE - 原始 16 字符二進(jìn)制格式:".md5($str,TRUE)."<br>"; echo "FALSE - 32 字符十六進(jìn)制格式:".md5($str)."<br>";
解決
那么如何得到不亂碼的16位md5值呢?有兩種方法:
substr(md5($str),8,16)
來獲得16個字符的md5密文了。其中第二個參數(shù)和第三個參數(shù)代表從第8個字符開始(下標(biāo)從0開始),取16個字符。這里我們用第二個方法來解決亂碼問題。還是以上面的例子:
$str = "PHP"; echo "字符串:".$str."<br>"; echo "TRUE - 原始 16 字符二進(jìn)制格式(亂碼):".md5($str,TRUE)."<br>"; echo "TRUE - 原始 16 字符二進(jìn)制格式(不亂碼):".substr(md5($str),8,16)."<br>"; echo "FALSE - 32 字符十六進(jìn)制格式:".md5($str)."<br>";
備注:而如果需要大寫的md5值,直接使用strtoupper(…)函數(shù)即可。
以上是PHP md5函數(shù)的16位字符亂碼怎么辦的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。