簡體   English   中英

密碼加密算法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM