FastAPI에서 요청된 데이터 암호화 및 암호 해독을 구현하는 방법
소개:
FastAPI는 Python 기반의 고성능 웹 프레임워크로, 웹 애플리케이션을 구축하는 간결하고 빠른 방법을 제공합니다. 개발 과정에서 데이터 전송의 보안을 보장하기 위해 요청된 데이터를 암호화하고 해독해야 하는 경우가 많습니다. 이 기사에서는 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
메소드를 호출하여 요청된 데이터를 암호화할 수 있습니다. 마지막으로 요청된 데이터를 업데이트하고 요청 처리를 계속합니다. 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}
在上述代码中,我们添加了两个路由,分别用于接收加密和解密的请求。这两个路由接收一个名为data
암호화된 요청 데이터를 처리하기 전에 이를 해독해야 합니다. 미들웨어 예시의 코드는 다음과 같습니다.
rrreee
decrypt
메소드를 호출하면 암호화된 요청 데이터를 해독할 수 있습니다. 마지막으로 요청된 데이터를 업데이트하고 요청 처리를 계속합니다. 5단계: 암호화 및 복호화 프로세스 테스트data
라는 문자열 매개변수를 수신하고 각각 암호화된 데이터와 해독된 데이터를 반환합니다. 이 예는 단지 데모용이므로 실제 프로젝트는 비즈니스 요구에 따라 적절히 처리되어야 합니다. 위 내용은 FastAPI에서 요청된 데이터 암호화 및 암호 해독을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!