首頁 >後端開發 >php教程 >如何在 PHP 中安全地加密和解密字串?

如何在 PHP 中安全地加密和解密字串?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-24 07:29:32844瀏覽

How Can I Encrypt and Decrypt Strings Securely in PHP?

如何使用金鑰加密和解密 PHP 字串

加密和解密 PHP中的字串涉及利用加密技術來保護敏感資訊

加密

使用金鑰加密字串:

  1. 在CTR 模式下使用AES: 使用計數器(CTR) 中的高階加密標準(AES)加密字串
  2. 驗證密文:使用 HMAC-SHA-256 或 Poly1305(對於流)計算 IV 和密文上基於雜湊的訊息驗證碼 (HMAC)密碼)。

解密

要使用相同的金鑰解密加密字串:

  1. 檢查MAC :
  2. 檢查MAC :

檢查MAC :重新計算MAC並與已儲存的進行比較一。

    解密訊息:
  • 在 CTR 模式下使用 AES 解密密文。
  • 其他注意事項
避免先前壓縮資料加密。

使用 mb_strlen() 和 mb_substr() 以及「8 位元」字元集來防止問題。

使用 CSPRNG 產生 IV 並避免 MCRYPT_RAND。

始終加密然後是MAC 以確保機密性和
use ParagonIE\Halite\Symmetric\Crypto as SymmetricCrypto;

$key = random_bytes(SODIUM_CRYPTO_SECRETBOX_KEYBYTES);
$ciphertext = SymmetricCrypto::encrypt($message, $key);
$plaintext = SymmetricCrypto::decrypt($ciphertext, $key);

Libsodium for PHP

如果使用PHP 7.2 或更高版本,請考慮使用libsodium 函式庫:
use Defuse\Crypto\Crypto;

$key = Key::createNewRandomKey();
$ciphertext = Crypto::encrypt($message, $key);
$plaintext = Crypto::decrypt($ciphertext, $key);

defuse/php-加密

  • 作為libsodium 的替代方案:
  • 密碼注意事項
  • 對於密碼: 使用Argon2、scrypt、bcrypt或PBKDF2-SHA256 具有高
對於身份驗證:使用基於 HMAC 的演算法,如 HKDF2 或 hash_hmac() 而不是加密。 對於 URL 參數:使用為 URL 參數驗證和篡改保護而設計的適當框架或程式庫。

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

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