[PYTHON] Informationen zur Textverschlüsselung (AES-Verschlüsselung)

Dies ist der erste Beitrag!

Während ich Python studiere, möchte ich eine Passwortverschlüsselung durchführen! Ich habe darüber nachgedacht. Es scheint, dass Pycrypto als Verschlüsselungspaket bekannt ist und mit Anaconda installiert werden könnte. Daher werde ich dieses Mal Pycrypto verwenden, um die AES-Verschlüsselung von Zeichenfolgen zusammenzufassen.

Verweise

Die Links, auf die ich beim Erlernen der AES-Verschlüsselung verwiesen habe, lauten wie folgt. https://blanktar.jp/blog/2013/04/python-crypto-aes.html https://ujise.com/2019/08/23/post-1869/ https://ja.wikipedia.org/wiki/Advanced_Encryption_Standard

Implementierung

Nun der eigentliche Code. Der folgende Code übergibt den Text des Passworts und verschlüsselt und entschlüsselt es. Die verschlüsselten Daten werden als password_data_file gespeichert.

pycrypto.py


from Crypto.Cipher import AES

#Tasteneinstellungsfunktion
def create_key(KeyWord):
    key_size = 32
    KeySizeFill = KeyWord.zfill(key_size)
    Key = KeySizeFill[:key_size].encode('utf-8')
    
    return Key

#Passwortverschlüsselungsfunktion
def encryptOn(PassWord, KeyWord):
    iv = "1234567890123456"   #Einstellung des Initialisierungsvektors
    Key = create_key(KeyWord) #Tasteneinstellung

    obj = AES.new(Key, AES.MODE_CFB, iv)
    ret_bytes = obj.encrypt(IPassWord) #Passwortverschlüsselung
    
    #Ausgabe der verschlüsselten Datei
    OFileName = "password_data_file"
    with open(OFileName, mode='wb') as f:
        f.write(ret_bytes)

#Funktion zum Zusammensetzen von Passwörtern
def encryptOff(KeyWord):
    #Passwortdatei lesen
    PassFile = "password_data_file"  
    with open(PassFile, 'rb') as f:
        EnPass = f.read() #Verschlüsseltes Passwort

    iv = "1234567890123456"   #Einstellung des Initialisierungsvektors
    key = create_key(KeyWord) #Tasteneinstellung

    obj = AES.new(key, AES.MODE_CFB, iv)
    OPassword = obj.decrypt(Pass).decode('utf-8') #Passwort-Compounding

    return OPassword

if __name__ == '__main__':
    IPassWord = "modelPass"
    KeyWord = "login_file"
    
    #Kryptografischer Funktionsaufruf
    encryptOn(IPassWord, KeyWord)
    #Komplexer Funktionsaufruf
    OPassWord = encryptOff(KeyWord)

    print(OPassWord)

Schließlich

Wenn Sie sich den Referenzcode zum ersten Mal ansehen, ist er kompliziert ~ verstehen Sie? Ich dachte, aber es ist unerwartet einfache Logik. Da der Schlüssel und der Vektor einfach direkt geschrieben werden, müssen sie für jede Verschlüsselung geändert werden.

Recommended Posts

Informationen zur Textverschlüsselung (AES-Verschlüsselung)
Führen Sie eine AES-Verschlüsselung mit DJango durch
Keine Salt-AES-Verschlüsselung in Python
Memo zur Verarbeitung und Verschlüsselung von PyCryptodome AES