Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

hash d'un fichier sqlite3

0 votes

Au démarrage du programme, celui ci doit vérifier si la base de donnée est différente grâce à un hash.

J'ai essayé differentes variantes qui ont toutes crashées.

#with open(DB_filename, "r",encoding='utf-8') as f:
with open(DB_filename, "rb") as f:

        #f = f.strip()

        hash_DBfile = hashlib.md5(f).hexdigest()
        #hash_DBfile = hashlib.md5(f)
        print(hash_DBfile)

mes erreurs successives:

TypeError: Unicode-objects must be encoded before hashing

TypeError: object supporting the buffer API required

AttributeError: '_io.TextIOWrapper' object has no attribute 'strip'

ValueError: binary mode doesn't take an encoding argument
demandé 29-Jul-2019 par buffalo974 (2,956 points)

1 Réponse

+2 votes
 
Meilleure réponse

hashlib.FUNC() a besoin de bytes, tu dois donc lui passer f.read():

with open(DB_filename, "rb") as f:
    checksum = hashlib.md5(f.read()).hexdigest()
    print("Checksum:", checksum)
répondu 29-Jul-2019 par Tiger-222 (1,200 points)
sélectionné 29-Jul-2019 par buffalo974
...