Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara melaksanakan penyulitan dan penyahsulitan data yang diminta dalam FastAPI

Cara melaksanakan penyulitan dan penyahsulitan data yang diminta dalam FastAPI

王林
王林asal
2023-07-29 23:53:122224semak imbas

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

Langkah 4: Nyahsulit Data Permintaan

Sebelum memproses data permintaan yang disulitkan, kami perlu menyahsulitnya. Berikut ialah kod untuk contoh middleware:
rrreee

Sama seperti proses penyulitan, kami mula-mula membaca kunci dan kemudian menggunakan kelas Fernet untuk melaksanakan operasi penyahsulitan. Dengan memanggil kaedah 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 penyahsulitan
    Selepas menggunakan kod di atas untuk melaksanakan perisian tengah penyulitan dan penyahsulitan, kami perlu menguji sama ada data permintaan boleh disulitkan dan dinyahsulit secara normal. Berikut ialah contoh kod untuk ujian pantas:
  • rrreee
  • Dalam kod di atas, kami telah menambah dua laluan untuk menerima permintaan yang disulitkan dan dinyahsulit masing-masing. Kedua-dua laluan ini menerima parameter rentetan bernama data dan masing-masing mengembalikan data yang disulitkan dan dinyahsulitkan. Contoh ini adalah untuk tujuan demonstrasi sahaja, projek sebenar perlu diproses sewajarnya berdasarkan keperluan perniagaan.
  • Kesimpulan:
Melalui langkah di atas, kami telah berjaya melaksanakan proses penyulitan dan penyahsulitan data permintaan dalam FastAPI. Dengan menggunakan perisian tengah penyulitan, kami boleh memastikan keselamatan semasa penghantaran data. Proses penyulitan dan penyahsulitan boleh diubah dan dilanjutkan mengikut keperluan sebenar. Saya harap artikel ini akan membantu anda melaksanakan penyulitan dan penyahsulitan data dalam pembangunan FastAPI. 🎜🎜Bahan rujukan: 🎜🎜🎜[Dokumen rasmi FastAPI](https://fastapi.tiangolo.com/)🎜🎜[dokumen rasmi kriptografi](https://cryptography.io/en/latest/)🎜🎜

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn