Хешът е низ с фиксирана дължина (дайджест), генериран от входни данни с произволен размер с помощта на хеш функция. Процесът е еднопосочен – не можете да декриптирате или обърнете хеш, за да получите оригиналните данни. Ето защо „хеш криптиране“ е погрешно название; Хеширането не е криптиране.
Популярните алгоритми за хеширане включват:
MD5 (остарел за целите на сигурността)
SHA-1 (оттеглен)
SHA-256, SHA-512 (част от семейството SHA-2)
SHA-3
bcrypt, scrypt, Argon2 (за сигурно хеширане на пароли)
Хеширането служи за няколко цели в киберсигурността и целостта на данните. Основни причини за използване на хеширане включват:
Целост на данните: Гарантира, че данните не са били променяни (напр. контролни суми на файлове).
Съхранение на пароли: Сигурно съхранява пароли чрез сравняване на хешове, вместо да съхранява действителни пароли.
Цифрови подписи: Хешовете се подписват, а не големи документи.
Ефективност: Малките хеш стойности с фиксиран размер се сравняват по-бързо от големите блокове данни.
Тъй като хешовете са детерминистични и бързи, те са идеални за задачи за проверка.
Използване Хеш функцията включва:
Въвеждане на данни (напр. файл, низ или парола).
Обработка на данните с хеширащ алгоритъм.
Получаване на дайджест, който е низ с фиксиран размер, който уникално представя входа.
За защита с парола:
Комбинирайте паролата със salt (случайни данни).
Приложете защитена хеш функция (напр. bcrypt или Argon2).
Съхранявайте получения хеш и salt сигурно.
Тъй като хешовете не могат да бъдат обърнати, проверявате въведените данни (като парола), като ги хеширате отново и сравнявате новия хеш със съхранения.
Хеширането трябва да се използва, когато:
Необходимо е да се провери целостта на данните (напр. проверка за повреда или подправяне).
Паролите трябва да се съхраняват сигурно (не криптирани или в обикновен текст).
Включени са цифрови подписи и сертификати (хеширането гарантира автентичността на документа).
Необходимо е бързо сравнение на данни (напр. в хеш таблици или кешове).
Хеширането не е подходящо, когато е необходимо да възстановите оригиналните данни по-късно – за това е предназначено криптирането.