Ver- und Entschlüsselung mit Python

Verwenden Sie PyCrypto für die Verschlüsselung im AES-Format

$ 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:])]

Erstellen Sie anschließend einen Schlüssel für die Authentifizierung.

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

>>> PkDv17c6xxiqXPrvG2cUiq90VIrERfthHuViKapv6E1F7E0IgP

usage

cipher = AESCipher("PkDv17c6xxiqXPrvG2cUiq90VIrERfthHuViKapv6E1F7E0IgP")

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

#Entschlüsselung
print(cipher.decrypt(password)) # -> hogefuga

Nachtrag

Ich habe mich bei PyPI registriert, weil es ein wenig bestückt ist und gefragt zu sein scheint.

$ pip install Simple-AES-Cipher

Weitere Informationen finden Sie unter Github.

Referenz

Advanced Encryption Standard Mit PyCrypto verschlüsseln

Recommended Posts

Ver- und Entschlüsselung mit Python
Pycrypto-Ver- und Entschlüsselung
Programmieren mit Python und Tkinter
Python und Hardware-Verwenden von RS232C mit Python-
Python mit Pyenv und Venv
Funktioniert mit Python und R.
Mit dem GPG-Befehl verschlüsseln / entschlüsseln
AES-CBC-Ver- und Entschlüsselung Die Node.js-Version mit Python wird ebenfalls hinzugefügt.
Kommunizieren Sie mit FX-5204PS mit Python und PyUSB
Leuchtendes Leben mit Python und OpenCV
Roboter läuft mit Arduino und Python
Installieren Sie Python 2.7.9 und Python 3.4.x mit pip.
Neuronales Netzwerk mit OpenCV 3 und Python 3
AM-Modulation und Demodulation mit Python
Scraping mit Node, Ruby und Python
Scraping mit Python, Selen und Chromedriver
Kratzen mit Python und schöner Suppe
JSON-Codierung und -Decodierung mit Python
Hadoop-Einführung und MapReduce mit Python
[GUI in Python] PyQt5-Drag & Drop-
Lesen und Schreiben von NetCDF mit Python
Ich habe mit PyQt5 und Python3 gespielt
Lesen und Schreiben von CSV mit Python
Mehrfachintegration mit Python und Sympy
Koexistenz von Python2 und 3 mit CircleCI (1.0)
Sugoroku-Spiel und Zusatzspiel mit Python
FM-Modulation und Demodulation mit Python
Versuchen Sie die Verschlüsselung / Entschlüsselung mit dem OpenSSL-Schlüssel mit Python3-Pow-Funktion
Kommunizieren Sie mit gRPC zwischen Elixir und Python
Datenpipeline-Aufbau mit Python und Luigi
Berechnen Sie das Standardgewicht und zeigen Sie es mit Python an
FizzBuzz in Python3
Scraping mit Python
Überwachen Sie Mojo-Ausfälle mit Python und Skype
Statistik mit Python
FM-Modulation und Demodulation mit Python Part 3
[Automatisierung] Bearbeiten Sie Maus und Tastatur mit Python
Scraping mit Python
Passwortlose Authentifizierung mit RDS und IAM (Python)
Python mit Go
Python-Installation und Paketverwaltung mit pip
Verwenden von Python und MeCab mit Azure Databricks
POST verschieden mit Python und empfange mit Flask
Bilder mit Pupil, Python und OpenCV aufnehmen
Twilio mit Python
Fraktal zum Erstellen und Spielen mit Python
Ein Memo mit Python2.7 und Python3 in CentOS
In Python integrieren
Spielen Sie mit 2016-Python
Verwenden Sie PIL oder Pillow mit Cygwin Python
AES256 mit Python
Getestet mit Python
Erstellen und entschlüsseln Sie Caesar-Code mit Python
Python beginnt mit ()
CentOS 6.4, Python 2.7.3, Apache, mod_wsgi, Django
Lesen und Schreiben von JSON-Dateien mit Python
Umgang mit "Jahren und Monaten" in Python
mit Syntax (Python)
Ich habe Numba mit Python3.5 installiert und verwendet