Sobes.tech
Junior — Middle

Μπορείς να απαριθμήσεις τα βασικά χαρακτηριστικά των συναρτήσεων κατακερματισμού;

sobes.tech AI

Απάντηση από AI

Χαρακτηριστικά γνωρίσματα των συναρτήσεων κατακερματισμού:

  • Αποφασιστικότητα: για την ίδια είσοδο, η συνάρτηση κατακερματισμού επιστρέφει πάντα το ίδιο αποτέλεσμα.
  • Ταχύτητα υπολογισμού: η συνάρτηση κατακερματισμού πρέπει να υπολογίζεται γρήγορα για οποιαδήποτε δεδομένα εισόδου.
  • Κατανομή: τα hashes πρέπει να κατανέμονται ομοιόμορφα σε ολόκληρο το εύρος τιμών για να ελαχιστοποιηθούν οι συγκρούσεις.
  • Αντοχή σε συγκρούσεις: η πιθανότητα διαφορετικών εισόδων να παράγουν το ίδιο hash (σύγκρουση) πρέπει να είναι ελάχιστη.
  • Μονοκατεύθυνση (για κρυπτογραφικές συναρτήσεις hash): δεν είναι δυνατή η ανάκτηση των αρχικών δεδομένων από το hash.

Παράδειγμα σε Go:

import (
    "fmt"
    "hash/fnv"
)

func hash(s string) uint32 {
    h := fnv.New32a()
    h.Write([]byte(s))
    return h.Sum32()
}

func main() {
    fmt.Println(hash("example"))
}

Εδώ χρησιμοποιείται η συνάρτηση hash FNV, που υπολογίζει γρήγορα το hash μιας συμβολοσειράς.