Cara melaksanakan penyulitan dan penyahsulitan data yang diminta dalam FastAPI
Pengenalan:
FastAPI ialah rangka kerja web berprestasi tinggi berdasarkan Python, yang menyediakan cara ringkas dan pantas untuk membina aplikasi web. Semasa proses pembangunan, kami selalunya perlu menyulitkan dan menyahsulit data yang diminta untuk memastikan keselamatan penghantaran data. Artikel ini akan memperkenalkan cara melaksanakan penyulitan dan penyahsulitan data yang diminta dalam FastAPI dan memberikan contoh kod yang sepadan.
Langkah 1: Pasang kebergantungan yang diperlukan
Sebelum kita bermula, kita perlu memasang beberapa kebergantungan yang diperlukan. Gunakan pip untuk memasang pakej pergantungan yang diperlukan melalui arahan berikut:
pip install cryptography
Langkah 2: Jana kunci
Kunci diperlukan untuk kedua-dua proses penyulitan dan penyahsulitan. Dalam contoh, kami menggunakan algoritma AES untuk penyulitan dan penyahsulitan. Pertama, kita perlu menjana kunci. Anda boleh menggunakan kod berikut untuk menjana kunci baharu:
from cryptography.fernet import Fernet def generate_key(): key = Fernet.generate_key() with open("key.key", "wb") as key_file: key_file.write(key)
Selepas menjalankan kod di atas, fail bernama "key.key" akan dijana dalam direktori semasa, yang menyimpan kunci yang dijana.
Langkah 3: Sulitkan data permintaan
Dalam FastAPI, middleware boleh digunakan untuk melaksanakan penyulitan data permintaan. Berikut ialah kod contoh middleware:
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
Dalam kod di atas, kami mula-mula membaca kunci yang dijana sebelum ini. Kemudian gunakan kelas Fernet untuk melaksanakan operasi penyulitan. Dengan memanggil kaedah encrypt
, kami boleh menyulitkan data yang diminta. Akhir sekali, kemas kini data yang diminta dan teruskan memproses permintaan itu. 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
Sebelum memproses data permintaan yang disulitkan, kami perlu menyahsulitnya. Berikut ialah kod untuk contoh middleware:
rrreee
nyahsulit
, kami boleh menyahsulit data permintaan yang disulitkan. Akhir sekali, kemas kini data yang diminta dan teruskan memproses permintaan itu. Langkah 5: Uji proses penyulitan dan penyahsulitandata
dan masing-masing mengembalikan data yang disulitkan dan dinyahsulitkan. Contoh ini adalah untuk tujuan demonstrasi sahaja, projek sebenar perlu diproses sewajarnya berdasarkan keperluan perniagaan. Atas ialah kandungan terperinci Cara melaksanakan penyulitan dan penyahsulitan data yang diminta dalam FastAPI. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!