Test dans un environnement réel
Test en production sans filigrane.
Fonctionne partout où vous en avez besoin.
À l'ère de la transformation numérique, on ne saurait trop insister sur l'importance de mécanismes cryptographiques robustes. La cryptographie garantit la sécurité et la confidentialité des données lorsqu'elles transitent par différents réseaux et systèmes. PyCryptodome est une bibliothèque Python qui se démarque dans le paysage cryptographique, en offrant une pléthore de fonctionnalités pour faciliter la manipulation sécurisée des données, comme les modes de chiffrement authentifiés(GCM, CCM, EAX, SIV, OCB) et AES accéléré avec un support de premier ordre. Cet article se penche sur la dernière version officielle de PyCryptodome, en explorant ses fonctionnalités, ses cas d'utilisation, son processus d'installation simplifié et la façon dont il peut être utilisé efficacement dans diverses applications. Nous créerons également des fichiers PDF cryptés à l'aide d'une bibliothèque C# distincte, IronPDF, avec PyCryptodome.
PyCryptodome est un paquetage Python autonome de primitives cryptographiques de bas niveau. Elle a été conçue pour remplacer directement l'ancienne bibliothèque PyCrypto, en corrigeant un grand nombre de ses limitations et en étendant ses capacités. Il fournit un large éventail d'algorithmes et de protocoles cryptographiques, ce qui en fait un outil précieux pour les développeurs qui doivent mettre en œuvre des fonctions de sécurité dans leurs applications.
Prise en charge d'un grand nombre d'algorithmes : PyCryptodome prend en charge un large éventail d'algorithmes cryptographiques, notamment AES, RSA, DSA, et bien d'autres. Cette prise en charge étendue permet aux développeurs de trouver les outils nécessaires pour répondre à leurs différents besoins en matière de cryptographie.
Facilité d'utilisation : La bibliothèque est conçue pour être conviviale, avec une API claire et concise qui permet même à ceux qui ont des connaissances limitées en cryptographie de mettre en œuvre des fonctions de sécurité de manière efficace.
Maintenance active : Contrairement à son prédécesseur PyCrypto, PyCryptodome est activement maintenu, avec des mises à jour et des améliorations régulières, garantissant la compatibilité avec les dernières versions de Python et les normes de sécurité.
Autonome : PyCryptodome ne nécessite aucune dépendance externe, ce qui le rend facile à installer et à utiliser dans différents environnements.
L'installation de PyCryptodome est un processus simple, grâce à sa nature autonome. Il peut être installé via pip
, l'installateur de paquets de Python, en utilisant la commande suivante :
pip install pycryptodome
PyCryptodome est organisé en plusieurs modules, chacun traitant de différents aspects de la cryptographie. Il est essentiel de comprendre ces modules pour exploiter efficacement la bibliothèque.
Les fonctions de hachage sont fondamentales pour la cryptographie, car elles permettent de produire une valeur de hachage de taille fixe à partir de données arbitraires. PyCryptodome supporte différents algorithmes de hachage grâce au module Crypto.Hash
.
from Crypto.Hash import SHA256
hash_object = SHA256.new(data=b'Hello, PyCryptodome!')
print(hash_object.hexdigest())
Le cryptage symétrique implique la même clé pour le cryptage et le décryptage. Le module Crypto.Cipher
de PyCryptodome supporte plusieurs algorithmes de chiffrement symétriques, y compris AES, DES, et plus encore.
from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes
key = get_random_bytes(16) # 16 bytes for AES-128
cipher = AES.new(key, AES.MODE_EAX)
data = b'Secret Message'
nonce = cipher.nonce
ciphertext, tag = cipher.encrypt_and_digest(data)
# Decryption
cipher = AES.new(key, AES.MODE_EAX, nonce=nonce)
plaintext = cipher.decrypt(ciphertext)
try:
cipher.verify(tag)
print("The message is authentic:", plaintext)
except ValueError:
print("Key incorrect or message corrupted")
Le chiffrement asymétrique utilise une paire de clés : une clé publique pour le chiffrement et une clé privée pour le déchiffrement. Le module Crypto.PublicKey
de PyCryptodome supporte RSA, DSA, et ECC(Cryptographie à courbe elliptique).
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP
key = RSA.generate(2048)
public_key = key.publickey()
cipher = PKCS1_OAEP.new(public_key)
ciphertext = cipher.encrypt(b'Secret Message')
# Decryption
cipher = PKCS1_OAEP.new(key)
plaintext = cipher.decrypt(ciphertext)
print(plaintext)
Les fonctions de dérivation de clés génèrent des clés cryptographiques à partir d'un mot de passe ou d'une phrase de passe. Cette fonction est particulièrement utile dans le cas d'un cryptage basé sur un mot de passe. PyCryptodome supporte PBKDF2, scrypt et d'autres algorithmes de dérivation de clés.
from Crypto.Protocol.KDF import PBKDF2
from Crypto.Random import get_random_bytes
password = b'my secret password'
salt = get_random_bytes(16)
key = PBKDF2(password, salt, dkLen=32, count=1000000)
print(key)
Les gestionnaires de mots de passe bénéficient des fonctions de dérivation de clés de PyCryptodome pour stocker et récupérer en toute sécurité les mots de passe des utilisateurs. En utilisant des algorithmes de dérivation de clés solides tels que PBKDF2, les développeurs peuvent s'assurer que les mots de passe stockés sont résistants aux attaques par force brute.
from Crypto.Protocol.KDF import PBKDF2
from Crypto.Random import get_random_bytes
from Crypto.Cipher import AES
# Derive a strong key from a password
password = b'user_password'
salt = get_random_bytes(16)
key = PBKDF2(password, salt, dkLen=32, count=1000000)
# Encrypt the password before storing
cipher = AES.new(key, AES.MODE_EAX)
stored_password = b'ActualPassword'
nonce = cipher.nonce
ciphertext, tag = cipher.encrypt_and_digest(stored_password)
# Store ciphertext, nonce, salt, and tag securely
password_data = {
'ciphertext': ciphertext,
'nonce': nonce,
'salt': salt,
'tag': tag
}
# Decrypt the password when needed
key = PBKDF2(password, password_data['salt'], dkLen=32, count=1000000)
cipher = AES.new(key, AES.MODE_EAX, nonce=password_data['nonce'])
plaintext = cipher.decrypt(password_data['ciphertext'])
try:
cipher.verify(password_data['tag'])
print("The stored password is authentic:", plaintext)
except ValueError:
print("Key incorrect or password corrupted")
IronPDF est une puissante bibliothèque de génération de PDF pour Python qui permet aux développeurs de créer, d'éditer et de manipuler des documents PDF sans effort. Il offre un large éventail de fonctionnalités, de la conversion de HTML en PDF à la fusion de plusieurs PDF, ce qui en fait un choix idéal pour l'automatisation des flux de documents. Combiné à PyCryptodome, une bibliothèque robuste pour les opérations cryptographiques, les développeurs peuvent ajouter des fonctions sécurisées à leurs documents PDF, telles que le cryptage et les signatures numériques. Cette intégration est particulièrement utile pour les applications exigeant des niveaux élevés de sécurité et d'intégrité des données, comme dans les environnements financiers, juridiques ou confidentiels.
Pour installer IronPDF, vous pouvez utiliser pip
, le gestionnaire de paquets Python. Voici comment commencer :
pip install ironpdf
Après l'installation, vous pouvez commencer à utiliser IronPDF pour créer et manipuler des PDF. Voici un exemple simple qui montre comment créer un PDF avec IronPDF puis utiliser PyCryptodome pour le chiffrer :
from ironpdf import *
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
import os
renderer = ChromePdfRenderer()
pdfFromUrl = renderer.RenderUrlAsPdf("https://ironpdf.com/")
pdfFromUrl.SaveAs("output.pdf")
# Encrypt the PDF with AES
def encrypt_file(file_name, key):
cipher = AES.new(key, AES.MODE_CBC)
iv = cipher.iv
with open(file_name, 'rb') as f:
data = f.read()
encrypted_data = iv + cipher.encrypt(pad(data, AES.block_size))
with open(file_name + '.enc', 'wb') as f:
f.write(encrypted_data)
# Example usage
key = os.urandom(16) # AES key must be either 16, 24, or 32 bytes long
encrypt_file("output.pdf", key)
Ce script présente la création d'un PDF simple à l'aide d'IronPDF, puis le chiffre à l'aide d'AES de PyCryptodome, fournissant ainsi une base pour la construction d'applications plus complexes et sécurisées de manipulation de PDF.
En conclusion, PyCryptodome est une bibliothèque Python puissante et polyvalente qui améliore considérablement les opérations cryptographiques pour les développeurs, offrant un large éventail d'algorithmes et une intégration facile avec d'autres outils comme IronPDF. Grâce à son ensemble complet de fonctionnalités, notamment la prise en charge des modes de chiffrement authentifiés, du chiffrement symétrique et asymétrique, du hachage et de la dérivation de clés, PyCryptodome répond aux besoins des applications modernes nécessitant des mesures de sécurité robustes. Sa facilité d'utilisation, sa maintenance active et sa nature autonome en font un outil indispensable pour mettre en œuvre un traitement sécurisé des données dans divers scénarios, de la gestion des mots de passe à la génération et au cryptage de documents sécurisés, en garantissant l'intégrité et la confidentialité des données dans un monde de plus en plus numérique.
Pour plus de détails sur la licence IronPDF, voir la page de licence IronPDF. Pour en savoir plus, consultez notre tutoriel complet sur la conversion de HTML en PDF.
9 produits de l'API .NET pour vos documents de bureau