首頁  >  文章  >  後端開發  >  php常用的加密方法有哪些

php常用的加密方法有哪些

青灯夜游
青灯夜游原創
2021-03-26 11:42:266614瀏覽

php常用的加密方法有:1、使用md5()函數;2、使用crypt()函數;3、使用sha1()函數;4、使用urlencode()函數;5、使用base64_encode( )函數;6、使用password_hash()函數。

php常用的加密方法有哪些

本教學操作環境:windows7系統、PHP7.1版,DELL G3電腦

##常用的PHP加密方式

1. MD5加密
#

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

  • str --  原始字串。

  • raw_output  --  如果可選的 raw_output 被設定為 TRUE,那麼 MD5 封包摘要將以16位元組長度的原始二進位格式傳回。

2. Crype加密

#crypt() 傳回一個基於標準UNIX DES 演算法或系統上其他可用的替代演算法的散列字串。

string crypt ( string $str [, string $salt ] )
參數

  • str  --  待散列的字串。

  • salt  --  可選的鹽值字串。如果沒有提供,演算法行為將由不同的演算法實現決定,並可能導致不可預料的結束。

這是也一種不可逆加密

3. Sha1加密

string sha1 ( string $str [, bool $raw_output = false ] )
參數


  • str  --  輸入字串。

  • raw_output  --  如果可選的raw_output 參數設定為TRUE,那麼sha1 摘要將以20 字元長度的原始格式傳回,否則傳回值為一個40 字元長度的十六進制數字。

這是也一種不可逆加密

4. URL加密

string urlencode ( string $str )
此函數便於將字串編碼並將其用於URL 的請求部分,同時它也便於將變數傳遞給下一頁。

傳回字串,此字串中除了-_. 之外的所有非字母數字字元都將被替換成百分號(%)後跟兩位十六進制數,空格則編碼為加號( )。此編碼與 WWW 表單 POST 資料的編碼方式是一樣的,同時與 application/x-www-form-urlencoded 的媒體類型編碼方式一樣。由於歷史原因,此編碼在將空格編碼為加號( )方面與 RFC1738 編碼不同。

string urldecode ( string $str )
解碼給出的已編碼字串中的任何 %##。加號(' ')被解碼成一個空格字元。

這是一種可逆加密,urlencode方法用於加密,urldecode方法用於解密

#5. Base64訊息編碼加密

string base64_encode ( string $data )
使用base64 對data 進行編碼。

設計此種編碼是為了使二進位資料可以透過非純 8-bit 的傳輸層傳輸,例如電子郵件的主體。

Base64-encoded 資料要比原始資料多佔用 33% 左右的空間。

string base64_decode ( string $data [, bool $strict = false ] )
對 base64 編碼的 data 進行解碼。

參數

  • data  --  編碼過的資料。

  • strict  --  如果輸入的資料超出了 base64 字母表,則傳回 FALSE。

6.phpass(推薦)

經 phpass 0.3 測試,在存入資料庫之前進行哈希保護使用者密碼的標準方式。許多常用的雜湊演算法如 md5,甚至是 sha1 對於密碼儲存都是不安全的, 因為駭客能夠使用那些演算法輕易地破解密碼。

對密碼進行雜湊最安全的方法是使用 bcrypt 演算法。開源的phpass 函式庫以一個易於使用的類別來提供該功能

7.個人認為更好的密碼加密方式

PHP5.5引入了Password Hashing函數,內核自備無需安裝擴充功能。在PHP5.4下測試了下也可是可以的,使用前最好確認一下你目前的環境是否支援這些函數。

Password Hashing主要提供了4個函數

//1.查看哈希值的相关信息
array password_get_info (string $hash)
 
//2.创建hash密码
string password_hash(string $password , integer $algo [, array $options ])

//3.判断hash密码是否特定选项、算法所创建
boolean password_needs_rehash (string $hash , integer $algo [, array $options ] 

//4.验证密码
boolean password_verify (string $password , string $hash)
如下實例:

$password = 'password123456';//原始密码
$hash_password = password_hash($password, PASSWORD_BCRYPT);//使用BCRYPT算法加密密码
if (password_verify($password , $hash_password)){
   echo "密码匹配";
}else{  
   echo "密码错误";
}
推薦學習:《

PHP影片教學

以上是php常用的加密方法有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn