ホームページ > バックエンド開発 > PHPチュートリアル > PHP で文字列を安全に暗号化および復号化するにはどうすればよいですか?

PHP で文字列を安全に暗号化および復号化するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-24 07:29:32
オリジナル
835 人が閲覧しました

How Can I Encrypt and Decrypt Strings Securely in PHP?

キーを使用して PHP 文字列を暗号化および復号化する方法

PHP で文字列を暗号化および復号化するには、暗号化技術を利用して機密情報を保護する必要があります。

暗号化

秘密キーを使用して文字列を暗号化するには:

  1. CTR モードで AES を使用する: カウンタ (CTR) で Advanced Encryption Standard (AES) を使用して文字列を暗号化します。
  2. 暗号文を認証します: HMAC-SHA-256 または Poly1305 (ストリームの場合) を使用して、IV および暗号文に対してハッシュベースのメッセージ認証コード (HMAC) を計算します。

復号

同じキーを使用して暗号化された文字列を復号するには:

  1. MAC を確認する: MAC を再計算し、保存されたものと比較します。 1 つ。
  2. メッセージを復号化します。 CTR モードで AES を使用して暗号文を復号化します。

その他の考慮事項

  • 事前にデータを圧縮しないでください。暗号化。
  • 問題を防ぐには、「8 ビット」文字セットで mb_strlen() および mb_substr() を使用します。
  • CSPRNG を使用して IV を生成し、MCRYPT_RAND を回避します。
  • 常に暗号化する次に MAC を使用して機密性と

Libsodium for PHP

PHP 7.2 以降を使用している場合は、libsodium の使用を検討してください。 library:

use ParagonIE\Halite\Symmetric\Crypto as SymmetricCrypto;

$key = random_bytes(SODIUM_CRYPTO_SECRETBOX_KEYBYTES);
$ciphertext = SymmetricCrypto::encrypt($message, $key);
$plaintext = SymmetricCrypto::decrypt($ciphertext, $key);
ログイン後にコピー

defuse/php-encryption

libsodium の代替として:

use Defuse\Crypto\Crypto;

$key = Key::createNewRandomKey();
$ciphertext = Crypto::encrypt($message, $key);
$plaintext = Crypto::decrypt($ciphertext, $key);
ログイン後にコピー

パスワード考慮事項

  • パスワードの場合: Argon2、scrypt、bcrypt、または PBKDF2-SHA256 を使用して反復回数を増やしてハッシュします。
  • 認証の場合: HKDF2 や HMAC ベースのアルゴリズムを使用します。暗号化の代わりに hash_hmac() を使用します。
  • URL パラメーターの場合: URL パラメーターの検証と改ざん保護用に設計された適切なフレームワークまたはライブラリを使用します。

以上がPHP で文字列を安全に暗号化および復号化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート