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