PHP加密擴充庫-Mhash擴充庫執行個體用法詳解

來源:互聯網
上載者:User
PHP加密擴充庫—Mhash擴充庫

什麼是Mhash擴充庫:Mhash是基於離散數學原理的無法復原向的php加密方式擴充庫,其在預設情況下不開啟。mhash的可以用於建立校正數值,訊息摘要,訊息認證碼,以及無需原文的關鍵資訊儲存(如密碼)等。

1.Mhash擴充庫安裝

關於Mhash庫的安裝跟Mcrypt擴充庫安裝是類似的,在這裡就不做多介紹了,大家可以參考上一篇文章《PHP加密擴充庫—Mcrypt擴充庫》!

2.Mhash擴充庫常量

Mhash庫支援 MD5,SHA,CRC32等多種散列演算法,可以使用mhash_count()和mhash_get_hash_name()函數輸出支援的演算法名稱。下面一起看下範例程式碼:

<?phpheader("Content-Type:text/html; charset=utf-8");$num = mhash_count();  //函數返回最大的hash idecho "mhash庫支援的演算法有:<br>";for($i=0;$i<=$num;$i++){    echo $i."=>".mhash_get_hash_name($i)."<br>"."";       //輸出每一個hash id 的名稱}?>

輸出結果為:

注意:如果在實際應用中使用上面的常量,需要在演算法名稱前面加上 MHASH_作為首碼,比如 CRC32 表示為 MHASH_CRC32。

3.Mhash應用

相對比 Mcrypt 擴充庫的 30 多個函數,Mhash庫中只有 5 個函數,除了上面使用到的兩個函數外,下面來介紹其他的 3 個函數。

(1)mhash_get_block_size()函數

函數文法格式如下:

int mhash_get_block_size ( int $hash )

該函數用來擷取參數 hash 的區塊大小,比如:mhash_get_biock_size(MHASH_CRC32)。

(2)mhash()函數

函數文法格式如下:

string mhash(int hash,string data[,string key])

該函數返回一個雜湊值。參數 hash 為要使用的演算法,參數data 是要加密的資料,參數key是加密使用的密鑰。

(3) mhash_keygen_s2k()函數

函數文法格式如下:

string mhash_keygen_s2k ( int $hash , string $password , string $salt, int $bytes )

該函數將根據參數password 和 salt 返回一個單位為位元組的 key值,參數 hash 為要使用的演算法。其中 salt 為一個固定 8 位元組的值,如果使用者給出的數值小與 8 位元組,將用 0 補齊。

下面執行個體中使用了 mhash_keygen_s2k()函數產生一個校正碼,並使用 bin2hex()函數將二進位結果轉換為十六進位。具體代碼如下:

<?phpheader("Content-Type:text/html; charset=utf-8");$filename = "08.txt";                          // 檔案路徑$str = file_get_contents($filename);            //讀取檔案內容到變數$str中$hash = 2 ;                                     //設定hash值$password = "111";                             //設定變數$password$salt = "1234";                                //設定變數$salt$key = mhash_keygen_s2k(1,$password,$salt,10);  //產生key 值$str_mhash =bin2hex(mhash($hash,$str,$key));    //使用$key 值、$hash值對字串$str 加密echo "檔案 08.txt 的校正碼是:".$str_mhash;  //輸出校正碼?>

輸出的結果為;


【相關推薦】

1. 相關專題推薦:《PHP加密函數》

2.PHP加密擴充庫—Mcrypt擴充庫執行個體用法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.