Maison  >  Article  >  développement back-end  >  Compétences en chiffrement et décryptage dans le développement Web Python

Compétences en chiffrement et décryptage dans le développement Web Python

WBOY
WBOYoriginal
2023-06-17 12:53:081719parcourir

Python est devenu l'un des langages importants​​dans le développement Web, et la technologie de cryptage et de déchiffrement est un élément indispensable du développement Web. Dans cet article, je présenterai les techniques de chiffrement et de déchiffrement en Python.

  1. Introduction au chiffrement et au décryptage

Dans le développement web, la sécurité des données est toujours cruciale, surtout lorsque certaines données confidentielles doivent être transmises. Par conséquent, une technologie de cryptage et de décryptage a vu le jour, qui peut protéger les données et garantir que seuls les utilisateurs légitimes peuvent accéder ou traiter les données.

En termes simples, le cryptage consiste à convertir les données originales en texte chiffré illisible grâce à un certain algorithme de cryptage, tandis que le décryptage consiste à restaurer le texte chiffré dans les données d'origine. Le cryptage et le décryptage nécessitent l’utilisation d’une clé spécifique, et seule la personne qui la possède peut effectuer les opérations de cryptage ou de décryptage.

  1. Algorithmes de cryptage et de déchiffrement

Il existe de nombreux algorithmes de cryptage et de déchiffrement en Python, notamment AES, DES, RSA, etc. Vous trouverez ci-dessous une brève introduction à plusieurs algorithmes couramment utilisés.

(1)AES

AES (Advanced Encryption Standard) est un algorithme standard de cryptage avancé qui peut protéger la sécurité de la transmission des données. AES est un algorithme de chiffrement symétrique, ce qui signifie que la même clé est utilisée lors du chiffrement et du déchiffrement. L'algorithme de chiffrement AES utilise une conception de chiffrement par blocs. Pour chaque longueur de clé, il existe des longueurs de bloc standard, celles couramment utilisées sont 128 bits, 192 bits et 256 bits.

Lorsque vous utilisez Python pour les opérations de cryptage et de décryptage AES, vous pouvez utiliser le module AES dans la bibliothèque pycryptodome ou le module fernet dans la bibliothèque de cryptographie.

(2) RSA

RSA est un algorithme de chiffrement asymétrique qui utilise deux clés, une clé publique pour le chiffrement et une clé privée pour le déchiffrement. La sécurité de l'algorithme RSA dépend de la difficulté de la factorisation première, généralement avec une longueur de clé de 1 024 bits ou 2 048 bits.

Lorsque vous utilisez Python pour les opérations de chiffrement et de décryptage RSA, vous pouvez utiliser le module RSA dans la bibliothèque pycryptodome ou le module rsa dans la bibliothèque de cryptographie.

(3)DES

DES (Data Encryption Standard) est un algorithme de cryptage symétrique qui divise les données en blocs de 64 bits et utilise une clé de 56 bits pour le cryptage. Le DES a été jugé dangereux et n’est généralement plus utilisé.

Vous pouvez également utiliser le module DES de la bibliothèque pycryptodome pour effectuer des opérations de cryptage et de décryptage DES en Python.

  1. Implémentation du cryptage et du décryptage en Python

En Python, diverses bibliothèques et modules peuvent être utilisés pour effectuer des opérations de cryptage et de décryptage. Ce qui suit utilise des exemples pour présenter l’utilisation de bibliothèques communes.

(1) Utilisez pycryptodome pour implémenter le cryptage et le décryptage AES

pycryptodome est un package Python qui peut fournir divers modules requis pour les opérations de cryptage et de décryptage. L'exemple suivant montre comment utiliser pycryptodome pour le chiffrement et le déchiffrement 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')

Dans le code ci-dessus, nous utilisons le module AES et le module Padding de pycryptodome pour effectuer des opérations de cryptage et de décryptage. Le module AES reçoit une clé et un vecteur d'initialisation (pour le mode CBC), puis utilise la fonction pad pour compléter les données à un multiple entier de la taille du bloc AES avant de les chiffrer. Lors du déchiffrement, le module AES est également utilisé pour recevoir la clé, le vecteur initial et le texte chiffré, et la fonction unpad est utilisée pour supprimer le remplissage des données déchiffrées.

(2) Utilisez la cryptographie pour implémenter le cryptage et le décryptage RSA

la cryptographie est une puissante bibliothèque de cryptage en Python, qui comprend divers algorithmes de cryptage. L'exemple suivant montre comment utiliser la cryptographie pour le chiffrement et le déchiffrement 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')

Dans le code ci-dessus, nous utilisons le module asymétrique de cryptographie, qui fournit des opérations telles que la génération, le cryptage et le déchiffrement de clés RSA. Lors de la génération de clés privées et publiques, nous utilisons la fonction generate_private_key et spécifions l'exposant public (généralement 65 537) et la longueur de la clé (généralement 2 048 bits).

Lors du cryptage, nous utilisons la fonction de cryptage de la clé publique et spécifions des paramètres tels que le mode de remplissage et l'algorithme de hachage. Lors du décryptage, nous utilisons la fonction de décryptage de la clé privée et spécifions également des paramètres tels que le mode de remplissage et l'algorithme de hachage. Il convient de noter que lors de l’utilisation de la cryptographie pour les opérations de chiffrement et de déchiffrement, la clé et les données doivent utiliser le type octets.

  1. Résumé

Cet article présente les algorithmes de chiffrement et de déchiffrement courants en Python et comment utiliser diverses bibliothèques et modules pour les opérations de chiffrement et de déchiffrement. Dans le développement Web, le cryptage et le déchiffrement sont l’un des moyens importants pour garantir la sécurité des données. J’espère que cet article vous sera utile.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn