PHP中的MD5加密

2021-03-31 11:15:11 字數 3615 閱讀 6219

綜述:密碼學是研究編制密碼(我們簡稱為加密:encode)和破譯密碼(我們稱之為解密:decode)的技術科學。研究密碼變化的客觀規律,應用於編制密碼以保守通訊秘密的,稱為編碼學;應用於破譯密碼以獲取通訊情報的,稱為破譯學,總稱密碼學。通常情況下,人們將可懂的文字稱為明文;將明文變換成的不可懂的文字稱為密文。把明文變換成密文的過程叫加密;其逆過程,即把密文變換成明文的過程叫解密。

php中提供了哪些資料加密功能?

php提供了crypt()函式完成加密功能:

string

crypt

(string

input_string [

,string

salt]) 

這一函式完成被稱作單向加密的功能,也就是說,它可以加密一些明碼,但不能夠將密碼轉換為原來的明碼。單向加密的口令一旦落入第三方人的手裡,由於不能被還原為明文,因此也沒有什麼大用處。在驗證使用者輸入的口令時,使用者的輸入採用的也是單向演算法,如果輸入與儲存的經加密後的口令相匹配,則輸入的口令一定是正確的。

這個函式的input_string引數是需要加密的字串,第二個引數salt是乙個位字串,它能夠影響加密的暗碼,進一步地排除被稱作預計算攻擊的可能性。預設情況下,php使用乙個2個字元的des干擾串,如果你的系統使用的是md5 ,它會使用乙個12個字元的干擾串。我們可以通過執行下面的命令發現系統將要使用的干擾串的長度:

print "系統使用的干擾串的長度是:". crypt_salt_length;

crypt()支援四種演算法,下面是它支援的演算法和相應的salt引數的長度:

[注:以下用**]

演算法

salt長度

crypt_std_des

2-character (預設)

crypt_ext_des

9-character

crypt_md5

12-character beginning with $1$

crypt_blowfish

16-character beginning with $2$

怎樣將php的資料加密功能應用於使用者驗證?

我們用crypt()實現使用者身份驗證。比如我們用一段php程式限制對乙個目錄的訪問,只允許註冊使用者訪問這一目錄。我們把資料儲存mysql資料庫的乙個表(這個資料表名為members)中:

create

table

members ( 

username 

char(14

) not

null

, password 

char(32

) not

null

primary

key(username) 

); 

然後,我們可以輸入使用者的資料到該表中:

使用者名稱

密碼

tomkelod1c377lke

john

ba1t7vnz9awgk

bill

paluvrwsrlz4u

這些加密的口令對應的明碼分別是tom、john和bill。我們將根據口令的前二個字母建立干擾串:

$enteredpassword.

$salt

=substr

($enteredpassword,0

,2

); 

$userpswd

=crypt

($enteredpassword

,$salt

); 

// $userpswd然後就和使用者名稱一起儲存在mysql 中

crypt()和apache的口令-應答驗證系統的應用

<?

php 



$host="

localhost"; 

//主機



$username="

tom"

; //

使用者名稱



$passwd="

hello world"; 

//密碼



$db=

"users"; 

//資料庫名 



//

設定是否通過驗證標誌,預設為否



$authorization=0



//提示使用者輸入帳號和密碼 



if

(isset

($php_auth_user

) &&

isset

($php_auth_pw

))

} 

if(

!$authorization

)else 

?>

在預設狀態下使用的 crypt()並不是最安全的,所以如果需要較高的安全效能,就需要其他更好的演算法,比如md5(),這一函式使用md5雜湊演算法。

如何通過md5方式進行加密?

php中通過md5方式加密的函式有md5(),它的乙個作用是混編。

乙個混編函式可以將乙個可變長度的資訊變換為具有固定長度被混編過的輸出,也被稱作"資訊文摘",這是十分有用的,因為 乙個固定長度的字串可以用來檢查檔案的完整性和驗證數字簽名與使用者身份。php內建的md5()混編函式將把乙個可變長度的資訊轉換為128位(32個字元)的資訊文摘。混編的乙個有趣的特點是:不能通過分析混編後的資訊得到原來的明碼,因為混編後的結果 與原來的明碼內容沒有依賴關係。即便只改變乙個字串中的乙個字元,也將使得md5混編演算法計算出二個截然不同的結果。我們首先來看下表的內容及其相應的結果:

使用md5()混編字串

<?

php 

$input="

hello,php world!"; 

$output

=md5

($input

); print

"輸出: $output "; 

?>

結果:

輸出: 7996b5e0804042fd531907a4900f190e

注意,結果的長度為32個字元。我們把$input的值稍微改變一下:

使用md5()對乙個稍微變化的字串進行混編

<?

php 

$input="

hello,php world!"; 

$output

=md5

($input

); print

"輸出: $output "; 

?>

結果:

hash2: f0456d48ed06a5c35b1e42561fa7a016

可以發現,儘管二個結果的長度都是32個字元,但明文中一點微小的變化使得結果發生了很大的變化,我們可以利用這個特點來檢查資料中微小變化。

php 變數的md5加密,PHP中的MD5加密

php中的md5加密 2005 02 17 enet ciweek 綜述 密碼學是研究編制密碼 我們簡稱為加密 encode 和破譯密碼 我們稱之為解密 decode 的技術科學。研究密碼變化的客觀規律,應用於編制密碼以保守通訊秘密的,稱為編碼學 應用於破譯密碼以獲取通訊情報的,稱為破譯學,總稱密碼...

c 中的md5加密

實際上就是拿簽名後的字串比較哦 有個專門的命名空間 system.security.cryptography code region 數字簽名 md5 public static string md5helper string origin endregion c 中的md5加密,很有用的類 usi...

java中的MD5加密

message digest algorithm 5 資訊 摘要演算法 經常說的 md5加密 就是它 資訊 摘要演算法。白話白話 md5,其實就是一中演算法。可以將乙個字串,或檔案,或壓縮包,執行md5後,就可以生成乙個固定長度為128bit的串。這個串,基本上是唯一的。所以,有人修過壓縮包後,就會...