HASH və ya hash funksiyası
HASH (və ya hash funksiyası) kompüter elmlərində verilənlərin (data) müəyyən uzunluqlu unikal bir dəyərə çevrilməsi üçün istifadə edilən riyazi alqoritmdir. HASH funksiyaları tez-tez məlumatların bütövlüyünü yoxlamaq, təhlükəsizlik sistemlərində istifadə etmək və verilənlərin sürətli indeksləşdirilməsini təmin etmək üçün işlədilir. HASH-ın əsas xüsusiyyətlərinə baxaq Hər hansı bir uzunluqdakı giriş verilənlərindən sabit ölçülü hash dəyəri çıxarılır. Məsələn, MD5 həmişə 128-bit uzunluğunda hash dəyəri yaradır,Eyni giriş verilənləri həmişə eyni hash dəyərini yaradır, lakin müxtəlif girişlər fərqli hash dəyərləri yaratmalıdır (ideal halda),HASH funksiyası geri çevrilməzdir, yəni hash dəyərindən ilkin verilənləri bərpa etmək mümkün deyil,İki müxtəlif giriş üçün eyni hash dəyərini yaratmaq ehtimalı çox aşağıdır (buna collision deyilir).
HASH funksiyasının tətbiq sahələri Məlumat yükləmələri zamanı faylın zədələnib-zədələnmədiyini yoxlamaq üçün hash dəyərlərindən istifadə olunur. Məsələn, SHA-256 ilə yaradılan hash faylın bütövlüyünü təmin edir.Şifrəli parol bazaları (məsələn, Linux sistemində /etc/shadow faylı) hash funksiyalarından istifadə edir.Digital imzalar və sertifikatlar hash funksiyalarına əsaslanır.Əsasən database-lərdə dataların indexlənməsi üçün məlumatların sürətli tapılması üçün hash funksiyalar istifadə olunur.Məsələn, Bitcoin-in blok zəncirində SHA-256 hash funksiyası ilə blokların təsdiqi həyata keçirilir.3. Əsas HASH alqoritmləri aşağıdakılardır.
MD5 (Message-Digest Algorithm 5) – 128-bit uzunluqlu hash yaradır.Tez-tez istifadə edilsə də, artıq kriptoqrafik olaraq təhlükəsiz deyil.
SHA (Secure Hash Algorithm) – SHA-1 160-bit hash yaradır. Artıq zəif hesab edilir.SHA-256 və SHA-512 daha güclü və müasir alqoritmlərdir.
CRC32 (Cyclic Redundancy Check) – Faylların səhvlərini yoxlamaq üçün istifadə olunur.
bcrypt və Argon2 – Xüsusilə parol hash-ləmək üçün nəzərdə tutulub və əlavə təhlükəsizlik təklif edir.
Bəs HASH funksiyası verilənləri qəbul edir, onları müəyyən bir alqoritm ilə emal edir və aşağıdakı formada nəticə çıxarır
Input: "Salam dünya" Output (SHA-256): "afafb768fb5efb3f7713b43ecddbe7a7d15b7c8a2e9c6de9ea65f1e00dc10cd3"
Əgər İnputda bir simvol belə dəyişdirilsə, hash dəyəri tamamilə fərqli olacaq.
HASH-lə bağlı problemlərdə vardır.Collision problemi: İki fərqli giriş üçün eyni hash dəyəri yarana bilər (zəif alqoritmlərdə daha çox rast gəlinir),Zəif alqoritmlər köhnəlmiş alqoritmlər (məsələn, MD5, SHA-1) hücumlara qarşı dayanıqsızdır.HASH funksiyaları verilənlərin təhlükəsizliyini və bütövlüyünü təmin etmək üçün geniş tətbiq sahəsi olan riyazi alqoritmlərdir. Lakin istifadə edərkən müasir və etibarlı alqoritmlərə üstünlük vermək vacibdir.