首頁 > 後端開發 > php教程 > 如何安全地檢索 PHP 中的加密密碼?

如何安全地檢索 PHP 中的加密密碼?

DDD
發布: 2024-12-27 12:52:13
原創
984 人瀏覽過

How Can I Securely Retrieve Encrypted Passwords in PHP?

安全密碼檢索:超越加密和雜湊

雖然確保資料安全至關重要,但儲存密碼等敏感資訊帶來了獨特的挑戰。對它們進行加密以供以後檢索似乎違反直覺,因為加密的本質在於使資料無法存取。然而,一個明確定義的加密和解密策略可以克服這個障礙。

在 PHP 中,你不能簡單地使用 bcrypt 這樣的雜湊函數來儲存密碼,因為它是一種單向轉換,導致無法檢索。為了解決這個問題,請考慮使用加密和加擾方法的組合,這樣您就可以在保留其安全性的同時檢索原始密碼。

全面的加密解決方案

安全地加密和解密密碼,考慮以下 PHP code:

$key = 'password to (en/de)crypt';
$string = ' string to be encrypted ';
登入後複製
// Encryption
$iv = mcrypt_create_iv(
    mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC),
    MCRYPT_DEV_URANDOM
);

$encrypted = base64_encode(
    $iv .
    mcrypt_encrypt(
        MCRYPT_RIJNDAEL_128,
        hash('sha256', $key, true),
        $string,
        MCRYPT_MODE_CBC,
        $iv
    )
);
登入後複製
// Decryption
$data = base64_decode($encrypted);
$iv = substr($data, 0, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC));

$decrypted = rtrim(
    mcrypt_decrypt(
        MCRYPT_RIJNDAEL_128,
        hash('sha256', $key, true),
        substr($data, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC)),
        MCRYPT_MODE_CBC,
        $iv
    ),
    ""
);
登入後複製

基本注意事項

要注意的是,提供的程式碼對資訊加密,但不會對密文進行身份驗證,以防止篡改。為了增強安全性,建議不要只依賴未經身份驗證的加密。

其他資源

探索以下資源進一步了解見解:

  • https://stackoverflow.com/a/30189841/2224584
  • https://stackoverflow.c om/a/30166085/2224584
  • https://stackoverflow.com/a/30159120/ 2224584

注意:加密金鑰安全

切勿使用「密碼」作為加密金鑰;加密金鑰應該是隨機字串。

以上是如何安全地檢索 PHP 中的加密密碼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板