日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

md5 php 加密后乱码_PHP md5函数 的16位字符乱码问题解决-阿里云开发者社区

發布時間:2025/3/15 php 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 md5 php 加密后乱码_PHP md5函数 的16位字符乱码问题解决-阿里云开发者社区 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

亂碼

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

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

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

默認情況下,md5(string $str) 會返回:32 字符、十六進制數字形式的散列值。

如果加上第二個參數 md5(string $str,TRUE) 則返回:16字節長度的原始二進制格式的散列值。

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

$str = "PHP";

echo "字符串:".$str."
";

echo "TRUE - 原始 16 字符二進制格式:".md5($str,TRUE)."
";

echo "FALSE - 32 字符十六進制格式:".md5($str)."
";

解決

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

對輸出的16字節的二進制轉化為十六進制;

md5的密文中,16位密文與32位密文的第8-24位子字符串是一樣的,所以我們就可以通過截取的方式:substr(md5($str),8,16)來獲得16個字符的md5密文了。其中第二個參數和第三個參數代表從第8個字符開始(下標從0開始),取16個字符。

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

$str = "PHP";

echo "字符串:".$str."
";

echo "TRUE - 原始 16 字符二進制格式(亂碼):".md5($str,TRUE)."
";

echo "TRUE - 原始 16 字符二進制格式(不亂碼):".substr(md5($str),8,16)."
";

echo "FALSE - 32 字符十六進制格式:".md5($str)."
";

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

作者:doctorrm

鏈接:PHP md5函數 的16位字符亂碼問題解決

來源:編程日志

著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

新人創作打卡挑戰賽發博客就能抽獎!定制產品紅包拿不停!

總結

以上是生活随笔為你收集整理的md5 php 加密后乱码_PHP md5函数 的16位字符乱码问题解决-阿里云开发者社区的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。