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 μιας συμβολοσειράς.