Cryptage et décryptage sécurisé avec PyCrypto AES-256
PyCrypto est une bibliothèque robuste pour les opérations cryptographiques en Python. Une tâche courante consiste à chiffrer et déchiffrer les données à l'aide d'AES-256, un algorithme de chiffrement standard utilisé pour la protection des données sensibles.
Définition du problème :
Créer un chiffrement fiable et les fonctions de décryptage à l'aide de PyCrypto nécessitent de résoudre plusieurs problèmes potentiels :
Amélioration de la sécurité et des fonctionnalités :
Pour répondre à ces préoccupations, une implémentation utilisant PyCrypto a été développé :
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:])]
Améliorations de la clé et de l'IV :
Mode de cryptage :
Cette implémentation utilise AES-256 en mode CBC (Cipher Block Chaining). Le mode CBC est recommandé pour chiffrer les données en blocs, et les IV sont utilisés pour garantir que chaque bloc est chiffré de manière unique.
Considérations IV :
Le IV est une valeur importante qui doit être généré en toute sécurité. L'utilisation de différents IV pour le cryptage et le décryptage n'affecte pas le résultat, mais le IV doit correspondre à celui utilisé lors du cryptage pour que le décryptage réussisse.
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!