Bienvenue sur IndexError.

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

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

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 par buffalo974 (2,886 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 par Tiger-222 (1,172 points)
sélectionné 29-Jul par buffalo974
...