PHP5 5 雜湊加密和匹配

2021-08-06 02:10:38 字數 2073 閱讀 2340

雜湊加密從php5.5開始支援,相比md5加密更安全,不可逆;使用方法如下:

/*

* 使用 password_hash($password,password_default)加密

* 使用 password_verify($password,$hash) 判斷是否匹配

*/$secret = '123456';

$hash = password_hash($secret,password_default);

if(password_verify($secret,$hash))else

**一、前言

php5.5提供了許多新特性及api函式,其中之一就是password hashing api(建立和校驗雜湊密碼)。

它包含4個函式:password_get_info()、password_hash()、password_needs_rehash()、password_verify()。

在php5.5之前,我們對於密碼的加密可能更多的是採用md5或sha1之類的加密方式(沒人像csdn那樣存明文吧。。),如:

echo md5("123456"); //輸出: e10adc3949ba59abbe56e057f20f883e

但是簡單的md5加密很容易通過字典的方式進行破解,隨便找個md5解密的**就能獲取原始密碼。

二、password hashing api

php5.5提供的password hashing api就能很好的解決這些問題。

我們先來看password_hash()函式:

**如下:

string password_hash ( string $password , integer $algo [, array $options ])

它有三個引數:密碼、雜湊演算法、選項。前兩項為必須的。

讓我們使用password_hash()簡單的建立乙個雜湊密碼:

**如下:

$pwd = "123456";

$hash = password_hash($pwd, password_default);

echo $hash;

上例輸出結果類似:$2y$10$4kau4fnguolmrmsshgkeme3dbg5pm3diikfkiaknh.sf1tpbb4uo2

並且重新整理頁面該雜湊值也會不斷的變化。

雜湊值建立完畢,我們可以用password_verify()來校驗密碼是否和雜湊值匹配:

**如下:

boolean password_verify ( string $password , string $hash )

它接收2個引數:密碼和雜湊值,並返回布林值。檢查之前生成的雜湊值是否和密碼匹配:

**如下:

if (password_verify($pwd,'$2y$10$4kau4fnguolmrmsshgkeme3dbg5pm3diikfkiaknh.sf1tpbb4uo2')) else

基本上使用以上這2個函式就能安全的建立和校驗hash密碼了,還有另外2個api函式:

**如下:

password_get_info()              //檢視雜湊值的相關資訊

password_needs_rehash()     //檢查乙個hash值是否是使用特定演算法及選項建立的

三、點評

雖然通過password_hash()建立的雜湊密碼更加安全,但是卻降低了互操作性。

如我們使用md5方式,在php中用標準的md5加密,很容易通過其他語言來校驗,如node.js:

**如下:

var hash = crypto.createhash('md5').update("123456").digest('hex');

if(hash == "e10adc3949ba59abbe56e057f20f883e")  console.log('密碼正確');

而使用password_hash()加密的雜湊值基本只能通過php的password_verify來校驗。

這2種方法各有優劣,是使用md5(或sha1等)+salt(干擾字串)的方式還是使用password_hash()大家根據具體情況取捨把。

php 5 5 編譯安裝

configure prefix usr local php with config file path usr local php etc with mysql usr local mysql with config file scan dir usr local php etc enable i...

在Zend Studio中除錯PHP(5 5)

本教程將教會您如何除錯檔案和應用程式以便從您的php 中獲取最大的效率和準確性。zend studio的除錯功能可以檢查並診斷php 在本地或遠端伺服器上的錯誤。偵錯程式允許您通過設定斷點 暫停啟動的程式 單步除錯 和檢查變數的內容來控制程式的執行。除錯應該在您的指令碼和應用程式已經充分形成試用和測...

php5 5編譯安裝報錯 struct flock

在對php進行安裝的過程 現如下錯誤 1 報錯資訊 1 checkingforknown struct flock definition.configure error don t know how to define struct flock on this system,set enable o...