Initial commit
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
import hashlib
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
class IntegrityChecker:
|
||||
"""
|
||||
Класс для проверки целостности файлов по хэш-сумме.
|
||||
"""
|
||||
|
||||
def calculate_hash(self, file_path: str) -> str:
|
||||
hasher = hashlib.sha256()
|
||||
with open(file_path, "rb") as f:
|
||||
for chunk in iter(lambda: f.read(4096), b""):
|
||||
hasher.update(chunk)
|
||||
return hasher.hexdigest()
|
||||
|
||||
def save_hash(self, file_path: str, hash_file: str) -> None:
|
||||
file_hash = self.calculate_hash(file_path)
|
||||
Path(hash_file).write_text(file_hash, encoding="utf-8")
|
||||
|
||||
def verify_hash(self, file_path: str, hash_file: str) -> bool:
|
||||
if not Path(hash_file).exists():
|
||||
return False
|
||||
expected = Path(hash_file).read_text(encoding="utf-8").strip()
|
||||
actual = self.calculate_hash(file_path)
|
||||
return expected == actual
|
||||
Reference in New Issue
Block a user