亚洲最大看欧美片,亚洲图揄拍自拍另类图片,欧美精品v国产精品v呦,日本在线精品视频免费

  • 站長資訊網(wǎng)
    最全最豐富的資訊網(wǎng)站

    如何解決PHP md5函數(shù)的16位字符亂碼問題

    php md5 16位字符亂碼的解決辦法:1、對輸出的16字節(jié)的二進制轉化為十六進制;2、通過“substr(md5($str),8,16)”方法來獲得16個字符的md5密文。

    如何解決PHP md5函數(shù)的16位字符亂碼問題

    推薦:《PHP視頻教程》

    亂碼

    PHP的md5函數(shù)用于對字符串參數(shù)進行md5運算,該函數(shù)有兩個參數(shù):

    md5 ( string $str [, bool $raw_output = FALSE ] ) : string

    第一個參數(shù)是輸入字符串;第二個參數(shù)默認為FALSE,設置為TRUE時可以輸出16位的md5值。

    默認情況下,md5(string $str) 會返回:32 字符、十六進制數(shù)字形式的散列值。
    如果加上第二個參數(shù) md5(string $str,TRUE) 則返回:16字節(jié)長度的原始二進制格式的散列值。

    由此我們看出,當返回16字節(jié)長度(對應16個字符,因為符合ASCII)的二進制格式時,由于瀏覽器對其進行了字符化處理,由此就會產(chǎn)生亂碼:

    $str = "PHP"; echo "字符串:".$str."<br>"; echo "TRUE - 原始 16 字符二進制格式:".md5($str,TRUE)."<br>"; echo "FALSE - 32 字符十六進制格式:".md5($str)."<br>";

    如何解決PHP md5函數(shù)的16位字符亂碼問題

    解決

    那么如何得到不亂碼的16位md5值呢?有兩種方法:

    1. 對輸出的16字節(jié)的二進制轉化為十六進制;
    2. md5的密文中,16位密文與32位密文的第8-24位子字符串是一樣的,所以我們就可以通過截取的方式:substr(md5($str),8,16)來獲得16個字符的md5密文了。其中第二個參數(shù)和第三個參數(shù)代表從第8個字符開始(下標從0開始),取16個字符。

    這里我們用第二個方法來解決亂碼問題。還是以上面的例子:

    $str = "PHP"; echo "字符串:".$str."<br>"; echo "TRUE - 原始 16 字符二進制格式(亂碼):".md5($str,TRUE)."<br>"; echo "TRUE - 原始 16 字符二進制格式(不亂碼):".substr(md5($str),8,16)."<br>"; echo "FALSE - 32 字符十六進制格式:".md5($str)."<br>";

    如何解決PHP md5函數(shù)的16位字符亂碼問題

    備注:而如果需要大寫的md5值,直接使用strtoupper(…)函數(shù)即可。

    贊(0)
    分享到: 更多 (0)
    網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號