Chiffrement et déchiffrement avec Python

Utilisez PyCrypto pour le chiffrement au format AES

$ pip install pycrypto

aes_cipher.py


import base64
from Crypto import Random
from Crypto.Cipher import AES

class AESCipher(object):
    def __init__(self, key, block_size=32):
        self.bs = block_size
        if len(key) >= len(str(block_size)):
            self.key = key[:block_size]
        else:
            self.key = self._pad(key)

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

    def decrypt(self, enc):
        enc = base64.b64decode(enc)
        iv = enc[:AES.block_size]
        cipher = AES.new(self.key, AES.MODE_CBC, iv)
        return self._unpad(cipher.decrypt(enc[AES.block_size:]))

    def _pad(self, s):
        return s + (self.bs - len(s) % self.bs) * chr(self.bs - len(s) % self.bs)

    def _unpad(self, s):
        return s[:-ord(s[len(s)-1:])]

Après cela, créez une clé pour l'authentification.

$ python -c "import string, random; print(''.join([random.choice(string.ascii_letters + string.digits) for i in range(50)]))"

>>> PkDv17c6xxiqXPrvG2cUiq90VIrERfthHuViKapv6E1F7E0IgP

usage

cipher = AESCipher("PkDv17c6xxiqXPrvG2cUiq90VIrERfthHuViKapv6E1F7E0IgP")

#chiffrement
password = cipher.encrypt("hogefuga")
print(password) # -> H/LfZg82FOdHhnructCHzfYnVgCOvjgEUGXXDFpjiYLBHw4Zflk/m2N9zEVwz6eC

#Décryptage
print(cipher.decrypt(password)) # -> hogefuga

Postscript

Je me suis inscrit chez PyPI car il est un peu approvisionné et semble être en demande.

$ pip install Simple-AES-Cipher

Voir Github pour plus d'informations.

référence

Advanced Encryption Standard Chiffrer avec PyCrypto

Recommended Posts

Chiffrement et déchiffrement avec Python
cryptage et décryptage pycrypto
Programmation avec Python et Tkinter
Python et matériel - Utilisation de RS232C avec Python -
python avec pyenv et venv
Fonctionne avec Python et R
Crypter / décrypter avec la commande GPG
La version Node.js de chiffrement et de déchiffrement AES-CBC avec Python sera également ajoutée.
Communiquez avec FX-5204PS avec Python et PyUSB
Briller la vie avec Python et OpenCV
Robot fonctionnant avec Arduino et python
Installez Python 2.7.9 et Python 3.4.x avec pip.
Réseau neuronal avec OpenCV 3 et Python 3
Modulation et démodulation AM avec python
Scraping avec Node, Ruby et Python
Grattage avec Python, Selenium et Chromedriver
Grattage avec Python et belle soupe
Encodage et décodage JSON avec python
Introduction à Hadoop et MapReduce avec Python
[GUI en Python] PyQt5-Glisser-déposer-
Lire et écrire NetCDF avec Python
J'ai joué avec PyQt5 et Python3
Lire et écrire du CSV avec Python
Intégration multiple avec Python et Sympy
Coexistence de Python2 et 3 avec CircleCI (1.0)
Jeu Sugoroku et jeu d'addition avec Python
Modulation et démodulation FM avec Python
Essayez le chiffrement / déchiffrement à l'aide de la clé OpenSSL avec la fonction pow de Python3
Communiquez entre Elixir et Python avec gRPC
Construction de pipeline de données avec Python et Luigi
Calculer et afficher le poids standard avec python
FizzBuzz en Python3
Grattage avec Python
Surveiller les pannes de Mojo avec Python et Skype
Statistiques avec python
Modulation et démodulation FM avec Python Partie 3
[Automation] Manipulez la souris et le clavier avec Python
Grattage avec Python
Authentification sans mot de passe avec RDS et IAM (Python)
Python avec Go
Installation de Python et gestion des packages avec pip
Utilisation de Python et MeCab avec Azure Databricks
POSTER diversement avec Python et recevoir avec Flask
Capturer des images avec Pupil, python et OpenCV
Twilio avec Python
Fractal pour faire et jouer avec Python
Un mémo contenant Python2.7 et Python3 dans CentOS
Intégrer avec Python
Jouez avec 2016-Python
Utilisez PIL ou Pillow avec Cygwin Python
AES256 avec python
Testé avec Python
Créer et décrypter du code César avec python
python commence par ()
CentOS 6.4, Python 2.7.3, Apache, mod_wsgi, Django
Lire et écrire des fichiers JSON avec Python
Gérer les "années et mois" en Python
avec syntaxe (Python)
J'ai installé et utilisé Numba avec Python3.5