Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimanakah PyCrypto AES-256 Boleh Digunakan untuk Penyulitan dan Penyahsulitan Selamat?

Bagaimanakah PyCrypto AES-256 Boleh Digunakan untuk Penyulitan dan Penyahsulitan Selamat?

DDD
Lepaskan: 2024-11-28 20:59:15
asal
706 orang telah melayarinya

How Can PyCrypto AES-256 Be Used for Secure Encryption and Decryption?

Penyulitan dan Penyahsulitan Selamat dengan PyCrypto AES-256

PyCrypto ialah perpustakaan yang teguh untuk operasi kriptografi dalam Python. Satu tugas biasa ialah menyulitkan dan menyahsulit data menggunakan AES-256, algoritma penyulitan standard industri yang digunakan untuk perlindungan data sensitif.

Definisi Masalah:

Membina penyulitan yang boleh dipercayai dan fungsi penyahsulitan menggunakan PyCrypto memerlukan menangani beberapa potensi isu:

  • Memastikan kunci dengan panjang yang sesuai
  • Memilih mod penyulitan yang sesuai
  • Memahami peranan dan penggunaan Vektor Permulaan (IV)

Meningkatkan Keselamatan dan Kefungsian:

Untuk menangani kebimbangan ini, pelaksanaan menggunakan PyCrypto telah dibangunkan:

import base64
import hashlib
from Crypto import Random
from Crypto.Cipher import AES

class AESCipher(object):

    def __init__(self, key):
        self.bs = AES.block_size
        self.key = hashlib.sha256(key.encode()).digest()

    def encrypt(self, raw):
        raw = self._pad(raw)
        iv = Random.new().read(AES.block_size)
        cipher = AES.new(self.key, AES.MODE_CBC, iv)
        return base64.b64encode(iv + cipher.encrypt(raw.encode()))

    def decrypt(self, enc):
        enc = base64.b64decode(enc)
        iv = enc[:AES.block_size]
        cipher = AES.new(self.key, AES.MODE_CBC, iv)
        return AESCipher._unpad(cipher.decrypt(enc[AES.block_size:])).decode('utf-8')

    def _pad(self, s):
        return s + (self.bs - len(s) % self.bs) * chr(self.bs - len(s) % self.bs)

    @staticmethod
    def _unpad(s):
        return s[:-ord(s[len(s)-1:])]
Salin selepas log masuk

Peningkatan Utama dan IV:

  • Kunci dicincang menggunakan SHA-256 untuk memastikan 32 bait panjang.
  • IV baharu dijana untuk setiap operasi penyulitan, memberikan perlindungan tambahan terhadap serangan.

Mod Penyulitan:

Pelaksanaan ini menggunakan AES-256 dalam mod CBC (Cipher Block Chaining). Mod CBC disyorkan untuk menyulitkan data dalam blok, dan IV digunakan untuk memastikan setiap blok disulitkan secara unik.

IV Pertimbangan:

IV ialah nilai penting yang mesti dijana dengan selamat. Menggunakan IV yang berbeza untuk penyulitan dan penyahsulitan tidak menjejaskan keputusan, tetapi IV mesti sepadan dengan IV yang digunakan semasa penyulitan untuk penyahsulitan berjaya.

Atas ialah kandungan terperinci Bagaimanakah PyCrypto AES-256 Boleh Digunakan untuk Penyulitan dan Penyahsulitan Selamat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan