溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

php的加密技術(shù)有哪些

發(fā)布時間:2022-03-19 10:28:56 來源:億速云 閱讀:150 作者:iii 欄目:大數(shù)據(jù)

本文小編為大家詳細(xì)介紹“php的加密技術(shù)有哪些”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“php的加密技術(shù)有哪些”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識吧。

單向散列加密就是把任意長的輸入消息串變化成固定長的輸出串且由輸出串難以得到輸入串的一種加密算法。

常見單向散列函數(shù):

  • MD5 (Message Digest Algorithm 5)

  • SHA (Secure Hash Algorithm)

  • MAC (Message Authentication Code)

  • CRC (Cyclic Redundancy Check)

利用單項(xiàng)散列加密的這個特性,可以進(jìn)行密碼加密保存。

PHP 處理密碼的幾種方式

  • MD5(不推薦)

$password = md5($_POST["password"]);

原因:加密算法比較簡單,而且很多破解密碼的站點(diǎn)都存放了大量的經(jīng)過MD5加密的密碼字符串。

  • SHA256 和 SHA512(不推薦)

$password = hash("sha256", $password);

原因:加密算法比較簡單。

  • 鹽值(額外字符串)(常用)

<?php
$strSalt = '2f9c8d7h7g7f8d9k';
echo hash("sha256", $password . $strSalt);

解釋:在加密的過程中,新增了一個字符串。

  • Bcrypt (比較安全)

$strSalt = '2f9c8d7h7g7f8d9k';
$salt = '$2y$11$' . $strSalt;
echo crypt($password, $salt);

解釋:salt 參數(shù)是可選的。然而,如果沒有salt的話,crypt()創(chuàng)建出來的會是弱密碼。

  • password_hash (安全)

//支持版本 (PHP 5 >= 5.5.0, PHP 7)
echo password_hash($password, PASSWORD_DEFAULT);

解釋:password_hash() 使用足夠強(qiáng)度的單向散列算法創(chuàng)建密碼的哈希(hash)。

PHP函數(shù):http://php.net/manual/zh/function.password-hash.php

PHP端驗(yàn)證密碼是否正確?

$password = 'e4r3t2y1u';
$strPwdHash = password_hash($password, PASSWORD_DEFAULT);
if (password_verify($password, $strPwdHash)) {
    //驗(yàn)證成功
} else {
    //驗(yàn)證失敗
}

對稱加密

采用單鑰密碼系統(tǒng)的加密方法,同一個密鑰可以同時用作信息的加密和解密,這種加密方法稱為對稱加密,也稱為單密鑰加密。

優(yōu)點(diǎn):對稱加密算法的優(yōu)點(diǎn)是算法公開、計算量小、加密速度快、加密效率高。

缺點(diǎn):在數(shù)據(jù)傳送前,發(fā)送方和接收方必須商定好秘鑰,雙方必須保存好秘鑰。

常用算法:

  • DES

  • AES

PHP 相關(guān)類庫,網(wǎng)上都能找到。

非對稱加密

非對稱加密算法需要兩個密鑰來進(jìn)行加密和解密,這兩個秘鑰是公開密鑰(public key,簡稱公鑰)和私有密鑰(private key,簡稱私鑰)。

請查看歷史文章:PHP 使用非對稱加密算法 (RSA)

密鑰安全管理

上面說到的這幾種加密技術(shù),能夠達(dá)到安全保密效果的一種重要前提就是密鑰的安全。

在實(shí)際工作中,我們有開發(fā)環(huán)境,預(yù)發(fā)布環(huán)境,正式環(huán)境,每個環(huán)境中的密鑰都不相同。

那么,我們應(yīng)該如何保存密鑰呢?

  • 寫在源碼中(不可?。?。

  • 寫在配置文件中。(大部分這樣干)。

  • 寫在環(huán)境變量中。(大部分這樣干)。

  • 保存在一個系統(tǒng)中,每次加密、解密都調(diào)取服務(wù)系統(tǒng)(系統(tǒng)開銷大)。

  • 自己寫一個擴(kuò)展,用PHP調(diào)取自己的擴(kuò)展(維護(hù)成本高)。

讀到這里,這篇“php的加密技術(shù)有哪些”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點(diǎn)還需要大家自己動手實(shí)踐使用過才能領(lǐng)會,如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

php
AI