Код IT
← Каталог

Работа с файлами, сетью и внешними API — Криптография — хеш, шифрование, безопасное затирание

Фрагмент из «Работа с файлами, сетью и внешними API»: Криптография — хеш, шифрование, безопасное затирание.

Python main.py

import hashlib
import os

from pathlib import Path

def sha256_file(path: Path) -> str:
    h = hashlib.sha256()
    with path.open("rb") as f:
        for chunk in iter(lambda: f.read(1024 * 1024), b""):
            h.update(chunk)
    return h.hexdigest()

def secure_delete(path: Path, passes: int = 3) -> None:
    length = path.stat().st_size
    with path.open("r+b") as f:
        for _ in range(passes):
            f.seek(0)
            f.write(os.urandom(length))
            f.flush()
            os.fsync(f.fileno())
    path.unlink()

import hashlib
import os

from pathlib import Path

def sha256_file(path: Path) -> str:
    h = hashlib.sha256()
    with path.open("rb") as f:
        for chunk in iter(lambda: f.read(1024 * 1024), b""):
            h.update(chunk)
    return h.hexdigest()

def secure_delete(path: Path, passes: int = 3) -> None:
    length = path.stat().st_size
    with path.open("r+b") as f:
        for _ in range(passes):
            f.seek(0)
            f.write(os.urandom(length))
            f.flush()
            os.fsync(f.fileno())
    path.unlink()