package hash import ( "crypto/sha256" // Используем SHA256 "encoding/hex" // Для преобразования хеша в строку "fmt" // Для форматирования ошибок "io" // Для копирования данных файла в хешер "os" // Для открытия файла ) // CalculateFileHash вычисляет SHA-256 хеш файла по указанному пути. // Возвращает хеш в виде шестнадцатеричной строки и ошибку, если возникли проблемы // при чтении файла или вычислении хеша. func CalculateFileHash(filePath string) (string, error) { file, err := os.Open(filePath) if err != nil { return "", fmt.Errorf("failed to open file %s: %w", filePath, err) } defer file.Close() hasher := sha256.New() if _, err = io.Copy(hasher, file); err != nil { return "", fmt.Errorf("failed to read file %s for hashing: %w", filePath, err) } hashBytes := hasher.Sum(nil) hashString := hex.EncodeToString(hashBytes) return hashString, nil }