[英]Password encryption algorithm
我想開發一個Web應用程序,用戶可以在其中登錄並插入其電子郵件和密碼(注冊時選擇)。 我想知道哪種是最好的密碼哈希算法。 我已經讀過bcrypt是一個不錯的選擇,但是像facebook這樣的網站使用什么算法?
您將需要在數據庫中存儲哈希和鹽,然后將其用於身份驗證。 當我實現此功能時,這篇文章尤其對我很有幫助: http : //www.codeproject.com/Articles/704865/Salted-Password-Hashing-Doing-it-Right
即使加密,也永遠不要存儲密碼。 由於可以解密已加密的內容,因此攻擊者可以這樣做。 Google對於“散列”和“咸化”,也許OWASP提出了一些如何正確執行此操作的建議。 我認為,存儲加密密碼將是要避免的漏洞列表。
我已經編寫了2個用於處理密碼的功能。 第一個接受字符串(即您的密碼)並返回種子哈希。 它使用時間的MD5哈希值並將其添加到字符串中。 然后,它將獲取該字符串的SHA256哈希。 然后,它將原始MD5哈希值添加到SHA256哈希值中。 該函數返回此96個字符的字符串。 第二個函數使用2個字符串作為此參數(要測試的密碼和要對其進行測試的密碼哈希),並返回一個布爾值。 這是PHP,但是邏輯當然可以轉移。
function hash_password( $password ){
$md5 = strtoupper( hash( 'md5', time() ) );
$hash = $md5 . strtoupper( hash( 'sha256', $md5 . $password ) );
return $hash;
}
function test_password( $password, $hash ){
$md5 = substr( $hash, 0, 32 );
$sha256 = substr( $hash, 32 );
if( $sha256 == strtoupper( hash( 'sha256', $md5 . $password ) ) )
return true;
else
return false;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.