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

2021-10-25 21:13:35 字數 2850 閱讀 3781

php中的md5加密

2005-02-17

enet&ciweek

綜述:密碼學是研究編制密碼(我們簡稱為加密: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)中:

mysql>create table members (

->username char(14) not null,

->password char(32) not null,

->primary key(username)

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

使用者名稱 密碼

tom kelod1c377lke

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))else {

print "已經加密";

在預設狀態下使用的 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加密

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

關於php密碼md5加密措施

對於我們程式原來說,沒有什麼比做乙個安全無漏洞的程式更重要了,一說到安全問題無疑的就會想到密碼,在乙個 裡有管理員密碼,有會員密碼等等。這些密碼都 是經過md5加密的,有的時候能過sql注入得到這個數值,可以破解出來你的密碼,這樣就很不安全了,下面我來介紹一下我在程式開發過程中的密碼處理經驗。第一種...

PHP中MD5函式效率

起因 md5函式與字串長度 然後就對php下的md5系列函式進行了研究,發現在網上的一些資訊其實是有細節問題的。比如 中md5 函式的執行時間會隨著字串的長度增加而直線變慢 雖然這個結論大致是正確的,但是他演示程式還是有細節問題,因為其中有不少的時間是被隨機字串給占用了。經過我的測試,php中md5...