Mit OpenSSL mit Python 3 verschlüsselte Dateien entschlüsseln

So entschlüsseln Sie eine OpenSSL-verschlüsselte Datei mit Python3.

Es ist eine Situation, die ziemlich wahrscheinlich erscheint, aber wenn es um das Entschlüsseln und Verschlüsseln von Dateien geht, gibt es nur wenige Dokumente und ich hatte ein kleines Problem, also habe ich mir eine Notiz gemacht.

Die Entwicklungsumgebung ist wie folgt. ・ Python 3.7.3 ・ Windows10 ・ Installieren Sie die erforderlichen Pakete jederzeit mit pip install

Der Import ist so geschrieben. (Beispiel)

import binascii
import io
from hashlib import sha256
from Crypto.Cipher import AES
from Crypto import Random

Entschlüsselung von mit OpenSSL verschlüsselten Dateien

@classmethod
def decrypt(self,infile, expf, key_length=32):
    """
    Decrypt the file.

    Parameters
    ----------
    infile : string
        File path before decryption
    expf : string
        File path after decryption
    key_length : int
        key_length

    Returns
        None
    -------
    """

    # Divide password hashed by sha256 to first half  and second half ,set to key and iv. This is OpenSSL specifications.
    key = binascii.unhexlify('E1B85B27D6BCB05846C18E6A48F118E8')
    iv = binascii.unhexlify('9F0C0587140DE9FB3359F8370D0DBA08')

    in_file  = open( infile , 'rb' )
    out_file = open( expf , 'wb' )

    bs = AES.block_size

    cipher = AES.new(self.key, AES.MODE_CBC, self.iv)
    next_chunk = ''
    finished = False
    while not finished:
        chunk, next_chunk = next_chunk, cipher.decrypt(in_file.read(1024 * bs))
        if len(next_chunk) == 0:
            padding_length = chunk[-1]
            chunk = chunk[:-padding_length]
            finished = True

        if type(chunk) is str:
            wk = chunk.encode('utf-8')
        elif type(chunk) is bytes:
            wk = chunk
        else:
            wk = chunk
    
        out_file.write(wk)

    # file close
    in_file.close()
    out_file.close()


Diesmal ist es verschlüsselt.

Verschlüsseln Sie Dateien mit der OpenSSL-Methode


@classmethod
def encrypt(self,in_file, out_file,  key_length=32):
    """
    Encrypt the file.

    Parameters
    ----------
    in_file : string
        File path before encryption
    out_file : string
        File path before encryption
    key_length : int
        key_length
    Returns
        None
    -------
    """

    # Divide password hashed by sha256 to first half  and second half ,set to key and iv. This is OpenSSL specifications.
    key = binascii.unhexlify('E1B85B27D6BCB05846C18E6A48F118E8')
    iv = binascii.unhexlify('9F0C0587140DE9FB3359F8370D0DBA08')

    in_file  = open( in_file , 'rb' )
    out_file = open( out_file , 'wb' )

    bs = AES.block_size

    cipher = AES.new(self.key, AES.MODE_CBC, self.iv)

    finished = False
    while not finished:
        chunk = in_file.read(1024 * bs)
        if len(chunk) == 0 or len(chunk) % bs != 0:
            padding_length = (bs - len(chunk) % bs) or bs
            chunk += padding_length * bytes([padding_length])
            finished = True
        out_file.write(cipher.encrypt(chunk))
    
    # file close
    in_file.close()
    out_file.close()

Recommended Posts

Mit OpenSSL mit Python 3 verschlüsselte Dateien entschlüsseln
Mit openssl verschlüsselte Dateien werden mit openssl aus Python entschlüsselt
Entschlüsseln Sie eine unter iOS mit Python verschlüsselte Zeichenfolge
Sortieren von Bilddateien mit Python (2)
Sortieren Sie große Dateien mit Python
Sortieren von Bilddateien mit Python (3)
Bilddateien mit Python sortieren
Integrieren Sie PDF-Dateien in Python
TXT-Dateien mit Python lesen
Extrahieren Sie Zip-Dateien rekursiv mit Python
Bearbeiten von EAGLE .brd-Dateien mit Python
[Python] POST-WAV-Dateien mit Anforderungen [POST]
Entschlüsseln Sie OpenSSL AES-256-CBC-Code mit PyCrypto
Behandeln Sie Excel-CSV-Dateien mit Python
Lesen Sie Dateien parallel zu Python
[AWS] Verwenden von INI-Dateien mit Lambda [Python]
Spielen Sie eine Audiodatei von Python mit Interrupt ab
Erstellen und entschlüsseln Sie Caesar-Code mit Python
Lesen und Schreiben von JSON-Dateien mit Python
Laden Sie mit Python Dateien im Web herunter
[Easy Python] Lesen von Excel-Dateien mit openpyxl
Mit Ruby (Rails) verschlüsseln und mit Python entschlüsseln
[Easy Python] Lesen von Excel-Dateien mit Pandas
FizzBuzz in Python3
Scraping mit Python
Statistik mit Python
Scraping mit Python
Twilio mit Python
In Python integrieren
Spielen Sie mit 2016-Python
AES256 mit Python
Getestet mit Python
Python beginnt mit ()
mit Syntax (Python)
Bingo mit Python
Zundokokiyoshi mit Python
Excel mit Python
Mikrocomputer mit Python
Mit Python besetzen
[Python] Holen Sie sich die Dateien mit Python in den Ordner
Behandeln Sie Zip-Dateien mit japanischen Dateinamen in Python 3
Ziehen Sie eine lokale Datei mit Selenium (Python) per Drag & Drop.
Zeichenkodierung beim Umgang mit Dateien in Python 3
Laden Sie Dateien mit Lambda (Python) auf Google Drive hoch.
Lesen und Schreiben passt Dateien mit Python (Memo)
Konvertieren Sie mehrere Protodateien gleichzeitig mit Python
Lesen Sie WAV-Dateien nur mit dem Python-Standardpaket
Serielle Kommunikation mit Python
Django 1.11 wurde mit Python3.6 gestartet
Primzahlbeurteilung mit Python
Python mit Eclipse + PyDev.
Socket-Kommunikation mit Python
Datenanalyse mit Python 2
Laden Sie Dateien mit Django hoch
Scraping in Python (Vorbereitung)
Versuchen Sie es mit Python.
Extrahieren Sie die Tabelle der Bilddateien mit OneDrive & Python
Python lernen mit ChemTHEATER 03
"Objektorientiert" mit Python gelernt