FastAPI でリクエストされたデータの暗号化と復号化を実装する方法
FastAPI でリクエストされたデータの暗号化と復号化を実装する方法
はじめに:
FastAPI は、Python ベースの高性能 Web フレームワークであり、Web アプリを構築するための簡潔かつ高速な方法を提供します。開発プロセスでは、データ送信のセキュリティを確保するために、要求されたデータの暗号化と復号化が必要になることがよくあります。この記事では、リクエストされたデータの暗号化と復号化を FastAPI で実装する方法と、対応するコード例を紹介します。
ステップ 1: 必要な依存関係をインストールする
始める前に、必要な依存関係をいくつかインストールする必要があります。 pip を使用して、次のコマンドで必要な依存関係パッケージをインストールします。
pip install cryptography
ステップ 2: キーを生成する
暗号化および復号化のプロセスでは、キーの使用が必要です。この例では、暗号化と復号化に AES アルゴリズムを使用します。まず、キーを生成する必要があります。次のコードを使用して、新しいキーを生成できます。
from cryptography.fernet import Fernet def generate_key(): key = Fernet.generate_key() with open("key.key", "wb") as key_file: key_file.write(key)
上記のコードを実行すると、現在のディレクトリに「key.key」という名前のファイルが生成され、生成されたキーが保存されます。
ステップ 3: リクエスト データの暗号化
FastAPI では、ミドルウェアを使用してリクエスト データを暗号化できます。以下はミドルウェアの例のコードです:
from fastapi import FastAPI, Request app = FastAPI() @app.middleware("http") async def encrypt_request_data(request: Request, call_next): # 读取密钥 with open("key.key", "rb") as key_file: key = key_file.read() # 获取请求数据 data = await request.body() # 加密数据 f = Fernet(key) encrypted_data = f.encrypt(data) # 更新请求数据 request._body = encrypted_data # 继续处理请求 response = await call_next(request) return response
上記のコードでは、最初に以前に生成されたキーを読み取ります。次に、Fernet クラスを使用して暗号化操作を実行します。 encrypt
メソッドを呼び出すことで、要求されたデータを暗号化できます。最後に、要求されたデータを更新し、要求の処理を続行します。
ステップ 4: リクエスト データを復号化する
暗号化されたリクエスト データを処理する前に、リクエスト データを復号化する必要があります。以下はミドルウェアの例のコードです:
@app.middleware("http") async def decrypt_request_data(request: Request, call_next): # 读取密钥 with open("key.key", "rb") as key_file: key = key_file.read() # 获取请求数据 data = await request.body() # 解密数据 f = Fernet(key) decrypted_data = f.decrypt(data) # 更新请求数据 request._body = decrypted_data # 继续处理请求 response = await call_next(request) return response
暗号化プロセスと同様に、最初にキーを読み取り、次に Fernet クラスを使用して復号化操作を実行します。 decrypt
メソッドを呼び出すことで、暗号化されたリクエスト データを復号化できます。最後に、要求されたデータを更新し、要求の処理を続行します。
ステップ 5: 暗号化および復号化プロセスをテストする
上記のコードを使用して暗号化および復号化ミドルウェアを実装した後、リクエスト データを正常に暗号化および復号化できるかどうかをテストする必要があります。簡単なテストのコード例を次に示します。
from fastapi import FastAPI app = FastAPI(debug=True) @app.post("/api/encrypt") async def encrypt_data(data: str): return {"encrypted_data": data} @app.post("/api/decrypt") async def decrypt_data(data: str): return {"decrypted_data": data}
上記のコードでは、暗号化されたリクエストと復号化されたリクエストをそれぞれ受信するための 2 つのルートを追加しました。これら 2 つのルートは、data
という名前の文字列パラメータを受け取り、それぞれ暗号化されたデータと復号化されたデータを返します。この例はデモンストレーションのみを目的としており、実際のプロジェクトはビジネス ニーズに基づいて適切に処理する必要があります。
結論:
上記の手順により、FastAPI でリクエスト データの暗号化と復号化プロセスを正常に実装できました。暗号化ミドルウェアを利用することで、データ通信時のセキュリティを確保できます。暗号化と復号化のプロセスは、実際のニーズに応じて変更および拡張できます。この記事が、FastAPI 開発におけるデータの暗号化と復号化の実装に役立つことを願っています。
参考資料:
- [FastAPI公式ドキュメント](https://fastapi.tiangolo.com/)
- [暗号公式ドキュメント](https:/ /cryptography.io/en/latest/)
以上がFastAPI でリクエストされたデータの暗号化と復号化を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









LinuxターミナルでPythonバージョンを表示する際の許可の問題の解決策PythonターミナルでPythonバージョンを表示しようとするとき、Pythonを入力してください...

PythonのPandasライブラリを使用する場合、異なる構造を持つ2つのデータフレーム間で列全体をコピーする方法は一般的な問題です。 2つのデータがあるとします...

この記事では、numpy、pandas、matplotlib、scikit-learn、tensorflow、django、flask、and requestsなどの人気のあるPythonライブラリについて説明し、科学的コンピューティング、データ分析、視覚化、機械学習、Web開発、Hの使用について説明します。

正規表現は、プログラミングにおけるパターンマッチングとテキスト操作のための強力なツールであり、さまざまなアプリケーションにわたるテキスト処理の効率を高めます。

UvicornはどのようにしてHTTPリクエストを継続的に聞きますか? Uvicornは、ASGIに基づく軽量のWebサーバーです。そのコア機能の1つは、HTTPリクエストを聞いて続行することです...

この記事では、Pythonにおける仮想環境の役割について説明し、プロジェクトの依存関係の管理と競合の回避に焦点を当てています。プロジェクト管理の改善と依存関係の問題を減らすための作成、アクティベーション、およびメリットを詳しく説明しています。

Pythonでは、文字列を介してオブジェクトを動的に作成し、そのメソッドを呼び出す方法は?これは一般的なプログラミング要件です。特に構成または実行する必要がある場合は...
