NOM : DANGO pideng-pinawe
LAGUEBANDE arafat
FOEVI florent
FILIERES : cyber-securité
SIMULATION DU PROGRAMME PYTHON
DES ALGORITHMES RSA,AES,SHA-256
CODE PYTHON AES(Advanced Encryption Standard)
• Explication ligne par ligne :
o from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, Commenté [i1]:
modes: Importe les classes nécessaires pour le chiffrement.
o
o from cryptography.hazmat.backends import default_backend: Importe le
backend par défaut pour la cryptographie.
o
o from cryptography.hazmat.primitives import padding: Importe les outils pour
le padding.
o import os: Importe le module os pour générer des données aléatoires.
o def aes_encrypt(data, key):: Définit une fonction pour chiffrer les données.
o iv = os.urandom(16): Génère un vecteur d'initialisation aléatoire de 16 octets.
o cipher = Cipher(...): Crée un objet Cipher avec l'algorithme AES, le mode CBC
et l'IV.
o padder = padding.PKCS7(...).padder(): Crée un objet pour ajouter du padding
aux données.
o padded_data = padder.update(data) + padder.finalize(): Ajoute le padding
aux données.
o ciphertext = encryptor.update(padded_data) + encryptor.finalize(): Chiffre
les données.
o def aes_decrypt(iv, ciphertext, key):: Définit une fonction pour déchiffrer les
données.
o cipher = Cipher(...): Crée un objet Cipher avec l'algorithme AES, le mode CBC
et l'IV.
o padded_data = decryptor.update(ciphertext) + decryptor.finalize():
Déchiffre les données.
o unpadder = padding.PKCS7(...).unpadder(): Crée un objet pour supprimer le
padding.
o data = unpadder.update(padded_data) + unpadder.finalize(): Supprime le
padding.
o key = os.urandom(32): Génère une clé aléatoire de 32 octets.
o iv, ciphertext = aes_encrypt(message, key): Chiffre le message.
o decrypted_message = aes_decrypt(iv, ciphertext, key): Déchiffre le message.
• À quoi ça sert : Chiffrer des données sensibles pour les protéger contre tout accès non
autorisé.
• Comment l'utiliser :
i. Générez une clé AES sécurisée (32 octets pour AES-256).
ii. Utilisez aes_encrypt pour chiffrer les données. Conservez l'IV.
iii. Utilisez aes_decrypt avec l'IV et la clé pour déchiffrer.
CODE PYTHON RSA (Rivest Shamir Adleman)
C’est un chiffrement asymétrique
• Explication ligne par ligne :
o from cryptography.hazmat.primitives.asymmetric import rsa, padding:
Importe les classes pour RSA et le padding.
o from cryptography.hazmat.primitives import hashes: Importe les fonctions de
hachage.
o from cryptography.hazmat.backends import default_backend: Importe le
backend par défaut.
o def rsa_encrypt(message, public_key):: Définit une fonction pour chiffrer avec
la clé publique.
o ciphertext = public_key.encrypt(...): Chiffre le message avec la clé publique
et le padding OAEP.
o def rsa_decrypt(ciphertext, private_key):: Définit une fonction pour
déchiffrer avec la clé privée.
o plaintext = private_key.decrypt(...): Déchiffre le message avec la clé privée
et le padding OAEP.
o private_key = rsa.generate_private_key(...): Génère une clé privée RSA.
o public_key = private_key.public_key(): Obtient la clé publique à partir de la clé
privée.
o ciphertext = rsa_encrypt(message, public_key): Chiffre le message.
o plaintext = rsa_decrypt(ciphertext, private_key): Déchiffre le message.
• À quoi ça sert :
o Chiffrement : Chiffrer des données sensibles avec la clé publique pour que seul le
détenteur de la clé privée puisse les déchiffrer.
o Signature numérique : Signer des données avec la clé privée pour prouver
l'authenticité et l'intégrité des données.
• Comment l'utiliser :
i. Générez une paire de clés RSA (privée et publique).
ii. Utilisez la clé publique pour chiffrer ou vérifier une signature.
iii. Utilisez la clé privée pour déchiffrer ou signer.