ホームページ バックエンド開発 PHPチュートリアル PHP で API を実装するときにデータの暗号化と復号化を処理する方法

PHP で API を実装するときにデータの暗号化と復号化を処理する方法

Jun 17, 2023 pm 03:40 PM
復号化 暗号化 API処理

インターネットの継続的な発展に伴い、API (アプリケーション プログラミング インターフェイス) の適用範囲はますます広範になり、さまざまなシステム間のデータのやり取りがますます頻繁になってきています。機密データを送信するには、データの暗号化と復号化が不可欠な手順です。この記事では、PHP ベースの API を実装する際のデータの暗号化と復号化の処理方法を紹介します。

1. データ暗号化が必要な理由

データ暗号化とは、元の平文を特定のアルゴリズムに従って暗号文に変換し、対応する鍵を取得していない人には解読できないようにすることを指します。データの機密性。 API 開発において、データ暗号化が必要となる主な理由は次の 2 点です。

  1. データ セキュリティ

API がサードパーティに公開される場合、送信による暗号化が行われます。プライベートな通信環境で実行されることを保証するものではないため、送信プロセス中にデータが盗まれたり改ざんされたりすることを防ぐために、暗号化によってデータのセキュリティと信頼性を確保できます。

  1. 合法性検証

データ暗号化により、本人確認や署名などを通じてデータ送信の合法性を保証できます。 API リクエストの送信プロセス中、リクエスト パラメータは不可逆アルゴリズムで暗号化され、リクエストの正当性が保証され、リクエスト データの不正な改ざんや偽造が防止されます。

2. PHP はデータ暗号化を実装します

  1. 対称暗号化アルゴリズム

対称暗号化アルゴリズムとは、暗号化と復号化に使用されるキーが同じであることを意味します。キーをパラメータとして渡すだけで、暗号化と復号化の操作が完了します。 API 開発で一般的に使用される対称暗号化アルゴリズムには、DES、3DES、AES などが含まれます。

AES 暗号化アルゴリズムを例に挙げると、PHP は、対称暗号化操作を実装するための openssl_encrypt() や openssl_decrypt() などの関数を提供します。使用方法は以下の通りです。

//AES加密
function aesEncrypt($data, $key) {
    $iv_len = openssl_cipher_iv_length('AES-128-CBC');
    $iv = openssl_random_pseudo_bytes($iv_len);
    $encrypted = openssl_encrypt($data, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv);
    $result = base64_encode($iv . $encrypted);
    return $result;
}
//AES解密
function aesDecrypt($data, $key) {
    $data = base64_decode($data);
    $iv_len = openssl_cipher_iv_length('AES-128-CBC');
    $iv = substr($data, 0, $iv_len);
    $encrypted = substr($data, $iv_len);
    $decrypted = openssl_decrypt($encrypted, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv);
    return $decrypted;
}
ログイン後にコピー

このうち、$dataは暗号化するデータ、$keyは鍵です。暗号化プロセス中に、openssl_cipher_iv_length() を呼び出して暗号化アルゴリズムに必要な IV ベクトルの長さを取得し、openssl_random_pseudo_bytes() を呼び出してランダムな IV ベクトルを生成してから、openssl_encrypt() 関数を呼び出して暗号化操作を実行します。復号化プロセスでは、まず、base64_decode() 関数によって暗号文がバイナリ データに復元され、次に IV ベクトルと暗号化データがそれぞれ抽出され、openssl_decrypt() 関数が呼び出されて復号化操作が実行されます。

    #非対称暗号化アルゴリズム
非対称暗号化アルゴリズムとは、暗号化と復号化に使用する鍵が異なることを意味し、一般に公開鍵を公開してデータの暗号化に使用します。その後、サーバー側の秘密キーによって復号化されます。 API 開発では、一般的な非対称暗号化アルゴリズムには RSA、DSA などが含まれます。

RSA 暗号化アルゴリズムを例に挙げると、PHP は、非対称暗号化操作を実装するための openssl_public_encrypt や openssl_private_decrypt などの関数を提供します。使用方法は以下の通りです。

//RSA加密
function rsaEncrypt($data,$public_key) {
    $encrypted = '';
    openssl_public_encrypt($data,$encrypted,$public_key,OPENSSL_PKCS1_PADDING);
    $encrypted = base64_encode($encrypted);
    return $encrypted;
}
//RSA解密
function rsaDecrypt($data,$private_key) {
    $decrypted = '';
    openssl_private_decrypt(base64_decode($data),$decrypted,$private_key,OPENSSL_PKCS1_PADDING);
    return $decrypted;
}
ログイン後にコピー

このうち、$dataは暗号化するデータ、$public_keyは公開鍵です。暗号化プロセス中に、openssl_public_encrypt() 関数を呼び出すことによってデータが暗号化され、その後、暗号化されたデータがbase64_encode() 関数によってエンコードされます。復号化プロセス中に、openssl_private_decrypt() 関数を呼び出すことによって暗号化されたデータが復号化され、復号化されたデータが返されます。

3. PHP はデータ署名を実装します

API のデータ署名は、パラメーターをハッシュすることによって正当性が検証されます。 API リクエスト パラメーターの場合、サーバーはデータ署名を実行して、データ送信の整合性と信頼性を保証する必要があります。

一般的に使用されるハッシュ アルゴリズムには、HMAC、SHA1、MD5 などが含まれます。 HMAC を例にとると、データ署名は PHP の組み込み hash_hmac() 関数を使用して簡単に実装できます。使用方法は次のとおりです。

//HMAC签名
function hmacSign($data, $secret) {
    $signed_data = hash_hmac('sha256', $data, $secret, false);
    return $signed_data;
}
ログイン後にコピー

このうち、$data は署名対象のデータ、$secret は署名鍵です。 hash_hmac() 関数を呼び出してデータをハッシュ暗号化し、署名されたデータを返します。

4. データの暗号化と復号化の例

次に、上記のデータ暗号化と署名方法を包括的に適用して、PHP を使用して API リクエスト パラメーターの暗号化と復号化プロセスを完了する方法を示します。

//数据加密
$data = [
    'user_id' => 12345,
    'user_name' => 'test',
    'timestamp' => time(),
];
$json_data = json_encode($data);
$encrypted_data = aesEncrypt($json_data, $encrypt_key);

//数据签名
$signature_data = $encrypted_data . $secret_key;
$signature = hmacSign($signature_data, $hmac_key);

//API请求构造
$params = [
    'data' => $encrypted_data,
    'signature'=> $signature,
];
$request_url = 'http://api.example.com' . '?'. http_build_query($params);

//API响应解析
$response_data = file_get_contents($request_url);
$response_data = json_decode($response_data, true);

//数据解密
$encrypted_data = $response_data['data'];
$signature_data = $encrypted_data . $secret_key;
$signature = $response_data['signature'];
if(hmacSign($signature_data, $hmac_key) === $signature) {
    $json_data = aesDecrypt($encrypted_data, $encrypt_key);
    $response = json_decode($json_data, true);
    //TODO:处理API响应数据
}
else {
    //TODO:处理签名不合法的情况
}
ログイン後にコピー
上記のコードでは、まず aesEncrypt() 関数を使用してリクエスト パラメーターを対称的に暗号化し、次に hmacSign() 関数を使用して暗号化されたデータをハッシュし、署名付きリクエスト パラメーターを生成します。サーバーはリクエストを受信すると、署名データをハッシュすることで署名が正当かどうかを検証し、aesDecrypt() 関数を使用して暗号化データを復号し、元のリクエスト パラメータを取得します。

実際の申請プロセスでは、API データの安全性を確保するために、暗号鍵や署名鍵などの情報が漏洩しないようにする必要があります。同時に、システムのパフォーマンスとセキュリティの要件を満たすために、システムの使用要件に基づいて適切な暗号化および署名アルゴリズムを選択する必要があります。

以上がPHP で API を実装するときにデータの暗号化と復号化を処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

HTTPステータスコード460の原因を明らかにする HTTPステータスコード460の原因を明らかにする Feb 19, 2024 pm 08:30 PM

HTTP ステータス コード 460 の復号化: このエラーはなぜ発生しますか?はじめに: 日常のネットワーク使用では、HTTP ステータス コードを含むさまざまなエラー プロンプトに遭遇することがよくあります。これらのステータス コードは、リクエストの処理を示すために HTTP プロトコルによって定義されたメカニズムです。これらのステータス コードの中には、比較的まれなエラー コード 460 があります。この記事では、このエラー コードを詳しく説明し、このエラーが発生する理由を説明します。 HTTP ステータス コード 460 の定義: まず、HTTP ステータス コードの基本を理解する必要があります。

Apple携帯電話でフォトアルバムの暗号化を設定する方法 Apple携帯電話でフォトアルバムの暗号化を設定する方法 Mar 02, 2024 pm 05:31 PM

Apple の携帯電話では、ユーザーは自分のニーズに応じてフォト アルバムを暗号化できます。設定方法がわからないユーザーもいます。暗号化が必要な写真をメモに追加し、メモをロッ​​クすることができます。次に、編集者がユーザー向けにモバイル フォト アルバムの暗号化を設定する方法を紹介します。興味のあるユーザーは、ぜひご覧ください。 Apple 携帯電話チュートリアル iPhone フォト アルバム暗号化の設定方法 A: 暗号化する必要がある写真をメモに追加した後、メモをロッ​​クして詳細を説明します。 1. フォト アルバムに入り、暗号化する必要がある写真を選択します。暗号化されたものを選択し、下の[追加]をクリックします。 2. [ノートに追加]を選択します。 3. メモを入力し、作成したメモを見つけて入力し、右上隅の [送信] アイコンをクリックします。 4. 下の[デバイスをロック]をクリックします

圧縮せずにフォルダーを暗号化するためのパスワードを設定する方法 圧縮せずにフォルダーを暗号化するためのパスワードを設定する方法 Feb 20, 2024 pm 03:27 PM

フォルダー暗号化は、フォルダーの内容を暗号化して、復号化パスワードを持っている人だけがファイルにアクセスできるようにする一般的なデータ保護方法です。フォルダーを暗号化する場合、ファイルを圧縮せずにパスワードを設定する一般的な方法がいくつかあります。まず、オペレーティング システムに付属の暗号化機能を使用して、フォルダーのパスワードを設定します。 Windowsユーザーの場合は、次の手順で設定できます。 暗号化するフォルダーを選択し、フォルダーを右クリックし、「プロパティ」を選択します。

単語の復号化を設定する方法 単語の復号化を設定する方法 Mar 20, 2024 pm 04:36 PM

現在の労働環境では機密保持に対する意識がますます高まっており、ソフトウェアを使用する際にはファイルを保護するために暗号化操作が行われることが多くなっています。特に重要な文書については機密保持に対する意識を高め、文書の安全性を常に最優先に考える必要があります。では、皆さんが単語の暗号化をどの程度理解しているのかわかりませんが、具体的にはどのように操作すればよいのでしょうか?今日は、以下の説明を通じて実際に単語の解読のプロセスをお見せしますので、単語の解読の知識を学ぶ必要がある友人は、今日のコースを見逃さないでください。ファイルを保護するには、まず復号化操作が必要です。これは、ファイルが保護ドキュメントとして処理されることを意味します。ファイルに対してこれを実行した後、ファイルを再度開くとプロンプトが表示されます。ファイルを復号化する方法はパスワードを入力することです。

winrar-winrar 暗号化圧縮パッケージ方式で圧縮パッケージを暗号化する方法 winrar-winrar 暗号化圧縮パッケージ方式で圧縮パッケージを暗号化する方法 Mar 23, 2024 pm 12:10 PM

エディターは、暗号化と圧縮の 3 つの方法を紹介します。 方法 1: 暗号化 最も簡単な暗号化方法は、ファイルを暗号化するときに設定したいパスワードを入力することで、暗号化と圧縮が完了します。方法 2: 自動暗号化 通常の暗号化方法では、各ファイルを暗号化するときにパスワードを入力する必要がありますが、多数の圧縮パッケージを暗号化する場合、パスワードが同じ場合は、WinRAR で自動暗号化を設定できます。通常のようにファイルを圧縮すると、WinRAR は各圧縮パッケージにパスワードを追加します。方法は次のとおりです。 WinRAR を開き、設定インターフェイスで [オプション] - [設定] をクリックし、[圧縮] に切り替え、[デフォルト構成の作成] - [パスワードの設定] をクリックします。 ここで設定したいパスワードを入力し、[OK] をクリックして設定を完了します。なおす

PyCharm インタープリターによって追加されたトリックの復号化 PyCharm インタープリターによって追加されたトリックの復号化 Feb 21, 2024 pm 03:33 PM

PyCharm インタプリタによって追加されたトリックを解読する PyCharm は、多くの Python 開発者に好まれる統合開発環境 (IDE) であり、開発効率を向上させるための強力な機能を多数提供します。中でもインタプリタの設定は PyCharm の重要な部分であり、インタプリタを正しく設定することで、開発者はコードをスムーズに実行し、プログラムをデバッグすることができます。この記事では、PyCharm インタープリターの追加機能を解読するためのいくつかのテクニックを紹介し、それを特定のコード例と組み合わせて、インタープリターを正しく構成する方法を示します。 Py でのインタープリターの追加と選択

EZVIZ Cloud Video の暗号化されたコンピュータ バージョンを復号化するにはどうすればよいですか? -EZVIZ Cloud Video PC バージョンは全画面表示で終了しますか? EZVIZ Cloud Video の暗号化されたコンピュータ バージョンを復号化するにはどうすればよいですか? -EZVIZ Cloud Video PC バージョンは全画面表示で終了しますか? Mar 18, 2024 pm 12:25 PM

EZVIZ クラウドでビデオを復号化する方法: EZVIZ クラウドでビデオを復号化する方法は数多くありますが、そのうちの 1 つは EZVIZ Cloud モバイル アプリを使用する方法です。ユーザーは、デバイス リストを入力し、復号化するカメラを選択して、デバイスの詳細ページに入るだけです。デバイスの詳細ページで、[設定] オプションを見つけ、[ビデオ暗号化] を選択して関連する設定を行います。ビデオ暗号化設定インターフェイスでは、ビデオ暗号化をオフにするオプションを選択し、設定を保存して復号化操作を完了できます。この簡単な手順により、ユーザーはビデオを簡単に復号化でき、カメラの使用の利便性が向上します。 EZVIZ Cloud のコンピュータクライアントを使用している場合も、同様の手順でビデオ暗号化をキャンセルできます。ログインして対応するカメラを選択し、デバイスの詳細インターフェイスに入り、設定でビデオの追加を探します。

暗号通貨のベテランによる新プロジェクト、Analog: 1,600万ドルを調達、エアドロップも予定 暗号通貨のベテランによる新プロジェクト、Analog: 1,600万ドルを調達、エアドロップも予定 Feb 22, 2024 pm 04:50 PM

原著者: Meteor、ChainCatcher 原編集者: Marco、ChainCatcher 最近、フルチェーン相互運用性プロトコルである Analog が 1,600 万米ドルの資金調達を明らかにし、注目を集めています 投資機関には TribeCapital、NGCVentures、Wintermute、GSR、NEAR、OrangeDAO が含まれます、マイク・ノボグラッツ氏のオルタナティブ資産管理会社サマラ・アセット・グループ、バラジ・スリニバサンなど。 2023 年末、Analog は業界で興奮を引き起こし、X プラットフォームでのオープン テストネット登録イベントに関する情報をリリースしました。

See all articles