Ответ
Хеш-функция — это математическая функция, которая преобразует входные данные произвольного размера в выходную битовую строку фиксированной длины, называемую хеш-суммой или хешем.
Основные свойства хеш-функции:
- Детерминированность: Один и тот же входной набор данных всегда даёт одну и ту же хеш-сумму.
- Высокая скорость вычисления: Хеш должен вычисляться быстро для любого набора данных.
- Практическая необратимость (сопротивление прообразу): По имеющемуся хешу должно быть вычислительно невозможно восстановить исходные данные.
- Сопротивление коллизиям: Должно быть вычислительно сложно найти два разных набора входных данных, которые приводили бы к одинаковой хеш-сумме (коллизии).
Применение в бэкенде:
- Хранение паролей: Хранятся не сами пароли, а их хеши (часто с "солью" — случайными данными).
- Проверка целостности данных: Для проверки того, что файл или сообщение не были изменены при передаче.
- Кэширование: Хеш от запроса может использоваться как ключ для кэшированного ответа.
- Структуры данных: Является основой для хеш-таблиц (в Go это
map
).
Пример использования sha256
в Go:
package main
import (
"crypto/sha256"
"fmt"
)
func main() {
data := []byte("hello world")
// Вычисляем хеш-сумму для наших данных
hash := sha256.Sum256(data)
// Выводим хеш в шестнадцатеричном формате
fmt.Printf("%xn", hash)
// Output: b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
}