首頁 >後端開發 >php教程 >如何使用 PHP 安全地加密和解密資料?

如何使用 PHP 安全地加密和解密資料?

Susan Sarandon
Susan Sarandon原創
2024-12-22 19:14:10718瀏覽

How to Securely Encrypt and Decrypt Data Using PHP?

如何在PHP 中安全地加密和解密密碼

存儲敏感的用戶信息,例如外國帳戶憑證,需要採取特殊的預防措施以確保資料安全。雖然加密提供了一層保護,但採用可靠的方法來防止未經授權存取純文字資料至關重要。

雜湊與加密

雜湊是首選方法密碼儲存。與加密不同,雜湊將密碼不可逆地轉換為唯一且不可逆的格式,幾乎不可能檢索原始密碼。這確保即使攻擊者獲得了哈希密碼的存取權限,他們也無法危害用戶帳戶。

加密和解密函數

對於需要加密的情況,PHP提供了多種加密和解密文字的函數。一種常見的方法是 Rijndael 密碼,也稱為AES-128:

$key = 'password to (en/de)crypt';
$string = ' string to be encrypted '; // note the spaces

加密:

$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
    )
);

到解密:

$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
    ),
    ""
);

到解密:

警告

如果未經身份驗證,加密資料很容易受到填充預言機攻擊。經過身份驗證的加密機制應始終與加密結合使用。

最佳實踐
  • 為了確保最高等級的安全性,請遵循以下最佳實務:
  • 使用隨機加密密鑰。
  • 將加密資料與明文分開儲存。
  • 限制加密金鑰的存取。
  • 定期輪替加密金鑰。
考慮使用加密函式庫來實作安全演算法並防止已知攻擊。

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn