PHP:Hash function
這年頭 md5 已經不可靠了
幾天前開始用 mhash 來處理 sha256 格式的密碼
由於使用 FreeBSD / PHP 5.1.6 平台的關係
所以就很直覺得使用 mhash() 來替代原本的 md5()
而剛剛在 Windows XP 上執行一樣的程式
發現執行 mhash() 有些問題
查了官網 PHP 發現原來 mhash() 自 PHP 5.3.0 要被打入冷宮了
所以還是乖乖統一用 hash() 來的比較保險!
而 hash() 是從 PHP 5.1.2 才開始支援的
如果有要跨越 PHP 5.1 至 5.3 甚至 PHP 6.0 的程式
在這邊還是先檢查一下 PHP 版本後看要用 mhash() or hash() 好
使用 mhash():
使用 hash():
mhash 支援的加密方式:
hash 支援的加密方式:
幾天前開始用 mhash 來處理 sha256 格式的密碼
由於使用 FreeBSD / PHP 5.1.6 平台的關係
所以就很直覺得使用 mhash() 來替代原本的 md5()
而剛剛在 Windows XP 上執行一樣的程式
發現執行 mhash() 有些問題
查了官網 PHP 發現原來 mhash() 自 PHP 5.3.0 要被打入冷宮了
所以還是乖乖統一用 hash() 來的比較保險!
Note: This extension has been moved to the » PECL repository and is no longer bundled with PHP as of PHP 5.3.0. This extension is obsoleted by Hash.
而 hash() 是從 PHP 5.1.2 才開始支援的
如果有要跨越 PHP 5.1 至 5.3 甚至 PHP 6.0 的程式
在這邊還是先檢查一下 PHP 版本後看要用 mhash() or hash() 好
使用 mhash():
function LoginPassword($PWD)注意:使用 mhash 加密時,需再使用 bin2hex() 函式轉換,否則會亂碼!
{
return bin2hex(mhash(MHASH_SHA256, $PWD));
}
使用 hash():
function LoginPassword($PWD)另外使用 hash() 的好處是,他比 mhash() 還支援更多種類的加密方式喔!
{
return hash('sha256', $PWD);
}
mhash 支援的加密方式:
- MHASH_ADLER32
- MHASH_CRC32
- MHASH_CRC32B
- MHASH_GOST
- MHASH_HAVAL128
- MHASH_HAVAL160
- MHASH_HAVAL192
- MHASH_HAVAL256
- MHASH_MD4
- MHASH_MD5
- MHASH_RIPEMD160
- MHASH_SHA1
- MHASH_SHA256
- MHASH_TIGER
- MHASH_TIGER128
- MHASH_TIGER160
hash 支援的加密方式:
md4 md5 sha1 sha256 sha384 sha512 ripemd128 ripemd160 whirlpool tiger128,3 tiger160,3 tiger192,3 tiger128,4 tiger160,4 tiger192,4 snefru gost adler32 crc32 crc32b haval128,3 haval160,3 haval192,3 haval224,3 haval256,3 haval128,4 haval160,4 haval192,4 haval224,4 haval256,4 haval128,5 haval160,5 haval192,5 haval224,5 haval256,5
Comments
在搜尋中找到你的blog,請問一下,Hash()是什麼意思呀?
hash() 的確是在 PHP5(5.1.2) 才有的 function
但在 mhash 可以用在 PHP4 & 5
Hash() 提供多種的方式加密
(i.e. "md5", "sha256", "haval160,4", etc..)
不過都是為單向的加密方式
也就是說無法將密碼透過解密的方式還原
網站一經 MD5、Sha256 等加密過
就很難(甚至不可能)轉換成 Hash() 的方式
這需要在網站一開始設計時就須考慮清楚的問題
PS. 一般網站系統目前還是用 MD5() 加密的比較多
:)