Хеш, или так называемая контрольная сумма является самым простым способом сравнения контента для проверки на изменения. Далее будет показано, как создать контрольную сумму из содержимого файла. В целях демонстрации будет использовать хеш функция MD5.

Как создать MD5 хеш-сумму файла в Golang?

1. Создайте файл content.dat со следующим содержимым:

Премиум 👑 канал по Golang

Рекомендуем вам супер TELEGRAM канал по Golang где собраны все материалы для качественного изучения языка. Удивите всех своими знаниями на собеседовании! 😎

Подписаться на канал

Уроки, статьи и Видео

Мы публикуем в паблике ВК и Telegram качественные обучающие материалы для быстрого изучения Go. Подпишитесь на нас в ВК и в Telegram. Поддержите сообщество Go программистов.

Go в ВК ЧАТ в Telegram


2. Создайте файл checksum.go со следующим содержимым:

3. Запустите код через go run checksum.go в главном терминале;
4. Посмотрите на результат:

контрольная сумма go

5. Создайте файл sha_panic.go со следующим содержимым:

6. Запустите код через go run sha_panic.go;
7. Посмотрите на результат в терминале:

checksum go

Модуль crypto — Функции MD5() и Sha1()

Пакет crypto содержит имплементации известных функций хеширования данных. MD5 хеш функция расположена в пакете crypto/md5. Каждая хеш функция в пакете crypto имплементирует интерфейс Hash. Обратите внимание, что Hash содержит метод Write. С методом Write он может использоваться как Writer. Это видно в функции FileMD5. Метод Sum от Hash принимает аргумент байтового среза, где должен находиться финальный хеш.

На заметку: Метод Sum не подсчитывает хеш аргумента, но рассчитывает на хеш в аргумент.

С другой стороны функция пакета md5.Sum может использоваться для создания хеша напрямую. В данном случае аргумент функции Sum является вычисленным из значений хеша.

Пакет crypto имплементирует все варианты SHA хеширования, а также другие хеш функции. Они обычно используются одинаково. К хеш функциям можно получить доступ через константу crypto.Hash из пакета crypto. К примеру, crypto.MD5.New(). Однако в данном случае пакет с данной функцией должен быть связан со встроенным двоичным файлом (можно использовать пустой импорт import _ "crypto/md5"), в противном случае вызов New приведет к ошибке.

На заметку: Сам по себе пакет hash содержит CRC контрольные суммы и многое другое.

 

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии