Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Kemahiran penyulitan dan penyahsulitan dalam pembangunan web Python

Kemahiran penyulitan dan penyahsulitan dalam pembangunan web Python

WBOY
WBOYasal
2023-06-17 12:53:081670semak imbas

Python telah menjadi salah satu bahasa penting dalam pembangunan Web, dan teknologi penyulitan dan penyahsulitan adalah bahagian yang sangat diperlukan dalam pembangunan Web. Dalam artikel ini, saya akan memperkenalkan teknik penyulitan dan penyahsulitan dalam Python.

  1. Pengenalan kepada Penyulitan dan Penyahsulitan

Dalam pembangunan web, keselamatan data sentiasa penting, terutamanya apabila beberapa data sulit perlu dihantar. Oleh itu, teknologi penyulitan dan penyahsulitan wujud, yang boleh melindungi data dan memastikan bahawa hanya pengguna yang sah boleh mengakses atau memproses data.

Ringkasnya, penyulitan adalah untuk menukar data asal kepada teks sifir yang tidak boleh dibaca melalui algoritma penyulitan tertentu, manakala penyahsulitan adalah untuk memulihkan teks sifir kepada data asal. Penyulitan dan penyahsulitan memerlukan penggunaan kunci tertentu, dan hanya orang yang telah menguasai kunci ini boleh melakukan operasi penyulitan atau penyahsulitan.

  1. Algoritma penyulitan dan penyahsulitan

Terdapat banyak algoritma penyulitan dan penyahsulitan dalam Python, termasuk AES, DES, RSA, dsb. Berikut adalah pengenalan ringkas kepada beberapa algoritma yang biasa digunakan.

(1) AES

AES (Advanced Encryption Standard) ialah algoritma standard penyulitan lanjutan yang boleh melindungi keselamatan penghantaran data. AES ialah algoritma penyulitan simetri, yang bermaksud kunci yang sama digunakan semasa penyulitan dan penyahsulitan. Algoritma penyulitan AES menggunakan reka bentuk sifir blok Bagi setiap panjang kekunci, terdapat panjang blok standard, yang biasa digunakan ialah 128 bit, 192 bit dan 256 bit.

Apabila menggunakan Python untuk operasi penyulitan dan penyahsulitan AES, anda boleh menggunakan modul AES dalam pustaka pycryptodome atau modul fernet dalam pustaka kriptografi.

(2) RSA

RSA ialah algoritma penyulitan asimetri yang menggunakan dua kekunci, kunci awam untuk penyulitan dan kunci peribadi untuk penyahsulitan. Keselamatan algoritma RSA bergantung pada kesukaran pemfaktoran utama, biasanya dengan panjang kunci 1024 bit atau 2048 bit.

Apabila menggunakan Python untuk operasi penyulitan dan penyahsulitan RSA, anda boleh menggunakan modul RSA dalam pustaka pycryptodome atau modul rsa dalam pustaka kriptografi.

(3) DES

DES (Data Encryption Standard) ialah algoritma penyulitan simetri yang membahagikan data kepada blok 64-bit dan menggunakan kunci 56-bit untuk penyulitan. DES telah dianggap tidak selamat dan secara amnya tidak lagi digunakan.

Anda juga boleh menggunakan modul DES dalam pustaka pycryptodome untuk melaksanakan operasi penyulitan dan penyahsulitan DES dalam Python.

  1. Pelaksanaan penyulitan dan penyahsulitan dalam Python

Dalam Python, anda boleh menggunakan pelbagai perpustakaan dan modul untuk melaksanakan operasi penyulitan dan penyahsulitan. Berikut menggunakan contoh untuk memperkenalkan penggunaan perpustakaan biasa.

(1) Gunakan pycryptodome untuk melaksanakan penyulitan dan penyahsulitan AES

pycryptodome ialah pakej Python yang menyediakan pelbagai modul yang diperlukan untuk operasi penyulitan dan penyahsulitan. Contoh berikut menunjukkan cara menggunakan pycryptodome untuk penyulitan dan penyahsulitan AES.

from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
import base64

def encrypt_aes(data, key):
    cipher = AES.new(key.encode('utf-8'), AES.MODE_CBC)
    cipher_text = cipher.encrypt(pad(data.encode('utf-8'), AES.block_size))
    iv = base64.b64encode(cipher.iv).decode('utf-8')
    cipher_text = base64.b64encode(cipher_text).decode('utf-8')
    return iv, cipher_text

def decrypt_aes(iv, cipher_text, key):
    cipher = AES.new(key.encode('utf-8'), AES.MODE_CBC, base64.b64decode(iv.encode('utf-8')))
    plain_text = unpad(cipher.decrypt(base64.b64decode(cipher_text.encode('utf-8'))), AES.block_size)
    return plain_text.decode('utf-8')

Dalam kod di atas, kami menggunakan modul AES dan modul Padding pycryptodome untuk melaksanakan operasi penyulitan dan penyahsulitan. Modul AES menerima kunci dan vektor pemulaan (untuk mod CBC), kemudian menggunakan fungsi pad untuk mepad data ke gandaan integer saiz blok AES sebelum menyulitkannya. Semasa menyahsulit, modul AES juga digunakan untuk menerima kunci, vektor awal dan teks sifir, dan fungsi unpad digunakan untuk mengalih keluar padding daripada data yang dinyahsulit.

(2) Gunakan kriptografi untuk melaksanakan penyulitan dan penyahsulitan RSA

Kriptografi ialah perpustakaan penyulitan yang berkuasa dalam Python yang merangkumi pelbagai algoritma penyulitan. Contoh berikut menunjukkan cara menggunakan kriptografi untuk penyulitan dan penyahsulitan RSA.

from cryptography.hazmat.primitives.asymmetric import rsa, padding
from cryptography.hazmat.primitives import serialization, hashes

def generate_rsa_key():
    private_key = rsa.generate_private_key(
        public_exponent=65537,
        key_size=2048
    )

    return private_key, private_key.public_key()

def encrypt_rsa(data, public_key):
    data = data.encode('utf-8')
    cipher_text = public_key.encrypt(
        data,
        padding.OAEP(
            mgf=padding.MGF1(algorithm=hashes.SHA256()),
            algorithm=hashes.SHA256(),
            label=None
        )
    )
    return cipher_text

def decrypt_rsa(cipher_text, private_key):
    plain_text = private_key.decrypt(
        cipher_text,
        padding.OAEP(
            mgf=padding.MGF1(algorithm=hashes.SHA256()),
            algorithm=hashes.SHA256(),
            label=None
        )
    )
    return plain_text.decode('utf-8')

Dalam kod di atas, kami menggunakan modul kriptografi asimetri, yang menyediakan operasi seperti penjanaan kunci RSA, penyulitan dan penyahsulitan. Apabila menjana kunci peribadi dan awam, kami menggunakan fungsi generate_private_key dan menentukan eksponen awam (umumnya 65537) dan panjang kunci (umumnya 2048 bit).

Apabila menyulitkan, kami menggunakan fungsi penyulitan kunci awam dan menentukan parameter seperti mod padding dan algoritma cincang. Apabila menyahsulit, kami menggunakan fungsi menyahsulit kunci persendirian dan juga menentukan parameter seperti mod padding dan algoritma cincang. Perlu diingatkan bahawa apabila menggunakan kriptografi untuk operasi penyulitan dan penyahsulitan, kedua-dua kunci dan data perlu menggunakan jenis bait.

  1. Ringkasan

Artikel ini memperkenalkan algoritma penyulitan dan penyahsulitan biasa dalam Python, dan cara menggunakan pelbagai perpustakaan dan modul untuk operasi penyulitan dan penyahsulitan. Dalam pembangunan web, penyulitan dan penyahsulitan adalah salah satu cara penting untuk memastikan keselamatan data saya harap artikel ini akan membantu anda.

Atas ialah kandungan terperinci Kemahiran penyulitan dan penyahsulitan dalam pembangunan web Python. 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