PHPで文字列を暗号化および復号化する方法?

Phpde Wen Zi Liewo An Hao Huaoyobi Fu Hao Huasuru Fang Fa



暗号化 データを秘密コード、または復号化する鍵を持たない人には理解できない形式に変換するプロセスです。 復号化 は、その情報を取得し、元の読み取り可能な形式に戻す手順です。 PHPでは、 暗号化、 復号化 パスワード、クレジット カード情報、その他の個人データなどの機密データを保護するために使用できます。

暗号化 アルゴリズムは、暗号化するデータの文字列を取り込み、選択した暗号化方式を使用してデータを暗号化する必要があります。その後、アルゴリズムは、データベースまたはファイルに保存できる形式で暗号化されたデータを返す必要があります。

復号化する データを復号化するには、暗号化に使用したのと同じ暗号化方法を使用する必要があります。これは、後でデータをデコードするためにキーを使用できるように、キーをどこかに保存する必要があることを意味します。







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

PHP 文字列は次のようになります。 暗号化された 復号化された 使用: openssl_encrpyt() openssl_decrypt() それぞれメソッド。



openssl_encrypt() 関数を使用して文字列を暗号化する

文字列を暗号化する PHP で、 openssl_encrypt() 関数を使用するには、平文文字列、暗号化方式、およびキーを指定する必要があります。この関数は暗号化されたデータを返し、安全に保存または送信できます。



の構文 openssl_encrypt() 方法は次のとおりです。





文字列 openssl_encrypt ( $data $メソッド $key $オプション = 0 $iv $タグ = ヌル $あなた 整数 $tag_length = 16 )
  • $データ: 暗号化する文字列またはデータ。
  • $メソッド: 使用する暗号化方式または暗号。サポートされている暗号方式のリストを取得するには、 openssl_get_cipher_methods()
  • $key: データの暗号化に使用される暗号化キー。これは、選択した暗号化方式に基づいて、適切な長さとランダム性を備えた文字列である必要があります。
  • $オプション: 特定の暗号化オプションの追加フラグを含めることができるオプションのパラメーター。を使用してフラグを組み合わせることができます。 ビットごとの OR (|) 一般的なフラグには次のものがあります。 OPENSSL_RAW_DATA OPENSSL_ZERO_PADDING
  • $iv: 暗号化に使用される初期化ベクトル (iv)。文字列として提供される、ランダムで一意の値である必要があります。
  • $タグ: GCM (ガロア/カウンター モード) や CCM (CBC-MAC によるカウンター) などの AEAD (関連データによる認証暗号化) 暗号モードに使用されるオプションのパラメーター。暗号化中に生成された認証タグを保存します。
  • あなたの: AEAD 暗号モードに使用できる追加の認証データ。
  • $tag_length: 認証タグの長さ。 GCM モードの場合、タグの長さの範囲は 4 ~ 16 バイトです。

例えば:


$simple_string = 「Linuxhint へようこそ \n ;
エコー 「元の文字列:」 $simple_string ;
$暗号化 = 「AES-128-CTR」 ;
$iv_length = openssl_cipher_iv_length ( $暗号化 ) ;
$オプション = 0 ;
$encryption_iv = 「1234567891011121」 ;
$encryption_key = 「リナックス」 ;
$暗号化 = openssl_encrypt ( $simple_string $暗号化
$encryption_key $オプション $encryption_iv ) ;
エコー 「暗号化された文字列:」 $暗号化 \n ;
?>

コードは最初に基本テキストを宣言します 「Linuxhint へようこそ」 echo コマンドを使用してそれを表示します。次に、使用する暗号化アルゴリズムを指定します。 AES-128-CTR 。また、 openssl_cipher_iv_length() サイズを計算する関数 初期化ベクトル (IV) この暗号に必要です。



コードは暗号化を設定します iv に値を付ける 「1234567891011121」 そして暗号化キーを 「リナックス」 。コマンドを使用して暗号化が完了すると、暗号化された文字列が echo コマンドを使用して表示されます。 openssl_encrypt() 関数。暗号化に使用されるランダムな初期化ベクトルにより、最終的に暗号化される文字列は毎回異なります。

openssl_decrypt() 関数を使用して文字列を復号化する

PHP で文字列を復号化するには、 openssl_decrypt() 関数。この関数は、暗号化されたデータ、暗号化方法、キーを入力として受け取り、復号化された平文を返します。

の構文 openssl_decrypt() 方法は次のとおりです。

文字列 openssl_decrypt ( $data $メソッド $key 整数 $オプション = 0 $iv $タグ $あなた )

関数に渡される引数は次のとおりです。

  • $データ: 復号化する暗号化された文字列またはデータ。
  • $メソッド: 暗号化中に使用される暗号化方式または暗号。サポートされている暗号方式のリストを取得するには、 openssl_get_cipher_methods()
  • $key: データの暗号化に使用された暗号化キー。暗号化中に使用されるキーと一致する必要があります。
  • $オプション: 特定の復号化オプションの追加フラグを含めることができるオプションのパラメーター。ビットごとの OR (|) 演算子を使用してフラグを組み合わせることができます。一般的なフラグには次のものがあります。 OPENSSL_RAW_DATA OPENSSL_ZERO_PADDING
  • $iv: 初期化ベクトル (IV) 暗号化時に使用されます。これは、暗号化中に使用され、文字列として渡されたものと同じ IV である必要があります。
  • $タグ: GCM (ガロア/カウンター モード) や CCM (CBC-MAC によるカウンター) などの AEAD (関連データによる認証暗号化) 暗号モードの認証タグ。認証が失敗した場合、openssl_decrypt() は FALSE を返します。
  • あなたの: AEAD 暗号モードの暗号化中に使用される追加の認証データ。

戻り値: 成功すると、復号化された文字列が返されます。それ以外の場合は FALSE を返します。

例えば:


$encrypted_string = 「rKaeYsYaNjkVbRPmJizrdX0xutLE」 ;
エコー 「暗号化された文字列:」 $encrypted_string \n ;
$decryption_iv = 「1234567891011121」 ;
$暗号化 = 「AES-128-CTR」 ;
$オプション = 0 ;
$復号化キー = 「リナックス」 ;
$復号化 = openssl_decrypt ( $encrypted_string $暗号化
$復号化キー $オプション $decryption_iv ) ;
エコー 「復号化された文字列:」 $復号化 ;
?>

このコードのベクトルの長さは、次の式を使用して計算されます。 openssl_cipher_iv_length() 関数と同じ暗号化 iv およびキー パラメーターが暗号化中に使用されます。暗号化アルゴリズムは次のように定義されます。 AES-128-CTR

以前に暗号化された文字列は、暗号化アルゴリズム、暗号化キー、設定、IV 値を使用して復号化されます。 openssl_decrypt() 関数。結果として得られる復号化されたテキストは、echo コマンドを使用して表示されます。

結論

Web サイトの作成には多くの場合、 暗号化と復号化 データ。暗号化を使用して機密データを保護すると、ユーザーが個人情報の盗難、詐欺、その他のセキュリティの脅威にさらされることを回避できます。 PHP の文字列は関数によって暗号化および復号化できます。 openssl_encrypt() openssl_decrypt() 機能。暗号化アルゴリズムとキーを慎重に採用することで、PHP アプリケーションで機密データを処理するための堅牢で安全なシステムを作成できます。