首頁  >  文章  >  後端開發  >  php加密的作用

php加密的作用

藏色散人
藏色散人原創
2019-09-17 11:42:342697瀏覽

php加密的作用

php加密的作用

#加密:為了做資料加密,不被看到明文。

在php的開發過程中,常常需要對部分資料(如使用者密碼)進行加密

一、加密類型:

1.單向雜湊加密

就是把任意長度的資訊進行雜湊計算,得到固定長度的輸出,這個雜湊計算過程是單向的,也就是不能對固定長度的輸出資訊進行計算從而得到輸入資訊。

(1)特徵:雪崩效應、定長輸出和不可逆。

(2)作用是:確保資料的完整性。

(3)加密演算法:md5(標準金鑰長度128位元)、sha1(標準金鑰長度160位元)、md4、CRC-32

2.對稱雜湊加密

對稱加密是指加密和解密是使用同一個金鑰,或者可以互相推算。

(1)加密方和解密方使用同一個金鑰。

(2)加密解密的速度比較快,適合資料比較長時的使用。

(3)金鑰傳輸的過程不安全,且容易被破解,金鑰管理也比較麻煩。

(4)加密演算法:DES(Data Encryption Standard)、3DES、AES(Advanced Encryption Standard,支援128、192、256、512位元金鑰的加密)、Blowfish。

3.非對稱雜湊加密

非對稱加密和解密使用的不是同一個金鑰,其中一個對外公開,稱作公鑰,另一個只有所屬者知道,稱作私鑰。

(1)每個使用者都擁用一對金鑰加密:公鑰和私鑰。

(2)公鑰加密,私鑰解密;私鑰加密,公鑰解密。

(3)公鑰傳輸的過程不安全,容易被竊取和取代。

(4)由於公鑰使用的金鑰長度非常長,所以公鑰加密速度非常慢,一般不使用其去加密。

(5)某一個使用者用其私鑰加密,其他使用者用其公鑰解密,實現數位簽章的功能。

(6)公鑰加密的另一個作用是實現金鑰交換。

(7)加密與簽章演算法:RSA、ELGamal。

(8)公鑰簽章演算法:DSA。

註解:

(1)RSA:由RSA 公司發明,是一個支援變長金鑰的公共金鑰演算法,需要加密的檔案區塊的長度也是可變的;

(2)DSA(Digital Signature Algorithm):數位簽章演算法,是一種標準的DSS(數位簽章標準);

(3)由於非對稱加密演算法的運行速度比對稱加密演算法的速度慢很多,當我們需要加密大量的資料時,建議採用對稱加密演算法,提高加解密速度。

對稱加密演算法不能實現簽名,因此簽名只能非對稱演算法。

(4)由於對稱加密演算法的金鑰管理是一個複雜的過程,金鑰的管理直接決定著他的安全性,因此當資料量很小時,我們可以考慮採用非對稱加密演算法。

(5)在實際的操作過程中,我們通常採用的方式是:採用非對稱加密演算法管理對稱演算法的金鑰,然後用對稱加密演算法加密數據,這樣我們就整合了兩類加密演算法的優點,既實現了加密速度快的優點,也實現了安全方便管理金鑰的優點。

二、php中常用的加密函數:

1.MD5加密:

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

(1)md5()預設情況下以32字元十六進位數字形式傳回雜湊值,它接受兩個參數,第一個要加密的字串,第二個為raw_output的布林值,

預設為false,如果設定為true,md5()則會傳回原始的16 位元二進位格式封包摘要

(2)md5()為單向加密,沒有逆向解密演算法,但還是可以對一些常見的字串透過收集,枚舉,碰撞等方法破解

2.Crypt加密:

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

(1)crypt()接受兩個參數,第一個為需要加密的字串,第二個為鹽值(就是加密幹擾值,如果沒有提供,則預設由PHP自動產生);

傳回散列後的字串或一個少於13 字元的字串,後者為了區別鹽值。

(2)crypt()為單向加密,跟md5一樣。

3.Sha1加密:

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

(1)跟md5很像,不同的是sha1()預設回傳40個字元的雜湊值,傳入參數性質一樣,第一個為加密的字串,

第二個為raw_output的布林值,預設為false,如果設定為true,sha1()則會傳回原始的20 位元原始格式封包摘要

(2)sha1()也是單行加密,沒有逆向解密演算法

4.Urlencode加密:

 string urlencode ( string $str )

(1)一個參數,傳入要加密的字串(通常應用於對URL的加密)

(2)urlencode為雙向加密,可以用urldecode來加密(嚴格意義上來說,不算真正的加密)

(3)回傳字符串,此字串中除了-_. 之外的所有非字母數字字元都將被替換成百分號(%)後跟兩位十六進制數,空格則編碼為加號( )。

(3)常見的urlencode()的轉換字元

    ? => %3F
    = => %3D
    % => %25
    & => %26
    \ => %5C
空格 => %5C

5.base64编码加密:

string base64_decode ( string $encoded_data )

(1)base64_encode()接受一个参数,也就是要编码的数据(这里不说字符串,是因为很多时候base64用来编码图片)

(2)base64_encode()为双向加密,可用base64_decode()来解密

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

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