À propos du cryptage de texte (cryptage AES)

Ceci est le premier post!

Tout en étudiant Python, je veux faire du cryptage de mot de passe! J'y ai pensé. Il semble que pycrypto soit célèbre en tant que package de cryptage, et il pourrait être installé avec Anaconda, donc cette fois j'utiliserai pycrypto pour résumer le cryptage AES des chaînes.

Les références

Les liens auxquels j'ai fait référence lors de l'apprentissage du cryptage AES sont les suivants. 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

la mise en oeuvre

Maintenant, le code réel. Le code ci-dessous transmet le texte du mot de passe et le crypte et le déchiffre. Les données chiffrées sont enregistrées sous le nom password_data_file.

pycrypto.py


from Crypto.Cipher import AES

#Fonction de réglage des touches
def create_key(KeyWord):
    key_size = 32
    KeySizeFill = KeyWord.zfill(key_size)
    Key = KeySizeFill[:key_size].encode('utf-8')
    
    return Key

#Fonction de cryptage du mot de passe
def encryptOn(PassWord, KeyWord):
    iv = "1234567890123456"   #Paramètre vectoriel d'initialisation
    Key = create_key(KeyWord) #Réglage clé

    obj = AES.new(Key, AES.MODE_CFB, iv)
    ret_bytes = obj.encrypt(IPassWord) #Cryptage du mot de passe
    
    #Sortie du fichier crypté
    OFileName = "password_data_file"
    with open(OFileName, mode='wb') as f:
        f.write(ret_bytes)

#Fonction de composition de mot de passe
def encryptOff(KeyWord):
    #Lire le fichier de mot de passe
    PassFile = "password_data_file"  
    with open(PassFile, 'rb') as f:
        EnPass = f.read() #Mot de passe crypté

    iv = "1234567890123456"   #Paramètre vectoriel d'initialisation
    key = create_key(KeyWord) #Réglage clé

    obj = AES.new(key, AES.MODE_CFB, iv)
    OPassword = obj.decrypt(Pass).decode('utf-8') #Composition de mot de passe

    return OPassword

if __name__ == '__main__':
    IPassWord = "modelPass"
    KeyWord = "login_file"
    
    #Appel de fonction cryptographique
    encryptOn(IPassWord, KeyWord)
    #Appel de fonction complexe
    OPassWord = encryptOff(KeyWord)

    print(OPassWord)

finalement

Quand vous regardez le code de référence pour la première fois, c'est compliqué ~ Comprenez-vous? J'ai pensé, mais c'est une logique étonnamment simple. Comme la clé et le vecteur sont simplement écrits directement, ils doivent être modifiés pour chaque cryptage.

Recommended Posts

À propos du cryptage de texte (cryptage AES)
Effectuer le cryptage AES avec DJango
Pas de cryptage AES Salt en Python
Mémo de traitement de cryptage et de décryptage PyCryptodome AES