/ / Nowy hash MD5 po zmianie pliku TXT w Pythonie - python, hash, md5

Nowy skrót MD5 po zmianie pliku TXT w Pythonie - python, hash, md5

Dzień dobry, Dlatego stworzyłem skrót MD5 z pliku TXT. Po zmianie zawartości pliku wstawiającej nowe wartości ponownie próbowałem utworzyć skrót MD5, ale wartość się nie zmieniła. Co mogłem zrobić?

Mój kod:

from hashlib import md5

open_file = open("N0003966.290", "r", encoding="ISO-8859-1")
file = open_file.read().lower().rstrip("nr ").strip("nr")

m = md5()
m.update(b"file")
print(m.hexdigest())

Muszę spełnić pewne wymagania, aby zbudować ten skrót, taki jak:

  • Regułą kodowania musi być „ISO-8859-1”
  • Wszystkie postacie muszą być małe litery
  • Nowe znaki linii i znaki powrotu karetki NIE mogą być brane pod uwagę w budynku mieszania

Odpowiedzi:

1 dla odpowiedzi № 1

Dzwonisz update na sznurku "file" zamiast zawartości pliku. Zrób to zamiast tego:

from hashlib import md5

open_file = open("N0003966.290", "r", encoding="ISO-8859-1")
file_content = open_file.read().lower().rstrip("nr ").strip("nr")

m = md5()
m.update(file_content.encode("ISO-8859-1"))
print(m.hexdigest())

Zauważ także, że zastępuję twoją zmienną file przez file_content (niewłaściwą praktyką jest nadpisywanie wbudowanej nazwy).


1 dla odpowiedzi nr 2
m.update(b"file")

Ta linia jest problemem. Wywołujesz funkcję na łańcuchu „plik” przedstawionym jako bajty (patrz to pytaniena przykład więcej o tym, co to oznacza), a nie o dane w pliku.

Jeśli go zastąpisz

m.update(file)

powinieneś uzyskać pożądane wyniki (chociaż, jak wskazuje DevShark, powinieneś także zmienić nazwę tej zmiennej na coś, co nie ma już własnego znaczenia).


0 dla odpowiedzi № 3
m.update(file.encode("ISO-8859-1"))

0 dla odpowiedzi nr 4

Ten kod działa również w pythonie 2.7.

from hashlib import md5

open_file = open("a.txt", "r")
file = open_file.read().lower().rstrip("nr ").strip("nr")

m = md5()
m.update(file)
print(m.hexdigest())

m.update(b"file") to miejsce, w którym wystąpił błąd, zastąp go błędem m.update(file).