"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como o PyCrypto AES-256 pode ser usado para criptografia e descriptografia seguras?

Como o PyCrypto AES-256 pode ser usado para criptografia e descriptografia seguras?

Publicado em 13/11/2024
Navegar:107

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

Criptografia e descriptografia seguras com PyCrypto AES-256

PyCrypto é uma biblioteca robusta para operações criptográficas em Python. Uma tarefa comum é criptografar e descriptografar dados usando AES-256, um algoritmo de criptografia padrão do setor usado para proteção de dados confidenciais.

Definição do problema:

Construindo criptografia confiável e funções de descriptografia usando PyCrypto requer a abordagem de vários problemas potenciais:

  • Garantir uma chave do apropriado comprimento
  • Escolha de um modo de criptografia adequado
  • Compreendendo a função e o uso de vetores de inicialização (IVs)

Aprimorando a segurança e a funcionalidade:

Para resolver essas preocupações, uma implementação usando PyCrypto foi desenvolvida:

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:])]

Aprimoramentos de chave e IV:

  • A chave é hash usando SHA-256 para garantir um comprimento de 32 bytes.
  • Um novo IV é gerado para cada operação de criptografia, fornecendo proteção adicional contra ataques.

Modo de criptografia:

Esta implementação usa AES-256 no modo CBC (Cipher Block Chaining). O modo CBC é recomendado para criptografar dados em blocos, e IVs são usados ​​para garantir que cada bloco seja criptografado exclusivamente.

Considerações sobre IV:

O IV é um valor importante que deve ser gerado com segurança. Usar IVs diferentes para criptografia e descriptografia não afeta o resultado, mas o IV deve corresponder ao IV usado durante a criptografia para que a descriptografia seja bem-sucedida.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3