Μετάβαση στο περιεχόμενο

Δημιουργία HMAC-SHA256

Δημιουργήστε μια υπογραφή HMAC-SHA256 από ένα μήνυμα και ένα μυστικό κλειδί. Το εργαλείο κωδικοποιεί και τα δύο ως UTF-8, εφαρμόζει τη δομή HMAC του RFC 2104 με SHA-256 και επιστρέφει την ετικέτα 256 bit σε hex ή Base64. Οι προγραμματιστές το χρησιμοποιούν για τον εντοπισμό σφαλμάτων σε υπογραφές webhook από υπηρεσίες όπως οι Stripe, GitHub ή Slack, για την υπογραφή αιτημάτων API και για τη σύγκριση αποτελεσμάτων με τον δικό τους κώδικα. Το κλειδί δεν επιστρέφεται ούτε καταγράφεται.

Επαναφορά

Συχνές ερωτήσεις

Τι είναι το HMAC-SHA256;

Το HMAC-SHA256 είναι ένας κωδικός ελέγχου ταυτότητας μηνύματος που βασίζεται στο SHA-256 και σε ένα μυστικό κλειδί, όπως ορίζεται στο RFC 2104. Μόνο όποιος έχει το κλειδί μπορεί να υπολογίσει τη σωστή ετικέτα για ένα μήνυμα. Το αποτέλεσμα είναι 32 bytes ή 64 χαρακτήρες hex.

Πώς επαληθεύω μια υπογραφή webhook;

Επικολλήστε το ακριβές ακατέργαστο σώμα του αιτήματος ως μήνυμα και το μυστικό υπογραφής ως κλειδί και, στη συνέχεια, συγκρίνετε το αποτέλεσμα με την κεφαλίδα υπογραφής. Πολλές υπηρεσίες υπογράφουν έναν συνδυασμό, όπως τη χρονική σήμανση της Stripe, μια τελεία και το σώμα, επομένως δημιουργήστε το μήνυμα σύμφωνα με τις οδηγίες της τεκμηρίωσής τους. Ακόμη και ένα byte που αλλάζει δίνει διαφορετική ετικέτα.

Υπάρχει γνωστό διάνυσμα δοκιμής;

Η δοκιμή 2 του RFC 4231 χρησιμοποιεί το κλειδί Jefe και το μήνυμα what do ya want for nothing? και αναμένει το 5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843. Αυτό το εργαλείο επιστρέφει ακριβώς αυτή την τιμή.

Πώς κωδικοποιούνται το κλειδί και το μήνυμα;

Και τα δύο κωδικοποιούνται ως κείμενο UTF-8. Αν το μυστικό σας παρέχεται σε hex ή Base64, όπως συμβαίνει σε ορισμένες υπηρεσίες, τα bytes διαφέρουν από το κείμενο που βλέπετε και πρέπει πρώτα να αποκωδικοποιήσετε το κλειδί στον δικό σας κώδικα. Τα κενά και οι αλλαγές γραμμής υπολογίζονται και στα δύο πεδία.

Αποθηκεύεται το μυστικό μου κλειδί;

Όχι. Το κλειδί χρησιμοποιείται μόνο για τον υπολογισμό της ετικέτας κατά την επεξεργασία του αιτήματος. Δεν περιλαμβάνεται στην απάντηση, δεν καταγράφεται και δεν αποθηκεύεται.

Μπορεί το κλειδί να είναι κενό ή πολύ μεγάλο;

Το HMAC δέχεται κλειδιά οποιουδήποτε μήκους, ακόμη και κενά. Τα κλειδιά με μήκος πάνω από 64 bytes κατακερματίζονται πρώτα με SHA-256, όπως ορίζει το RFC. Για πραγματική χρήση, επιλέξτε ένα τυχαίο κλειδί τουλάχιστον 32 bytes.

Να επιλέξω hex ή Base64;

Χρησιμοποιήστε τη μορφή που στέλνει η άλλη πλευρά. Οι GitHub και Stripe χρησιμοποιούν hex, ενώ το Slack προσθέτει το πρόθεμα v0= στο hex και πολλά συστήματα βασισμένα σε AWS και JWT χρησιμοποιούν Base64. Και οι δύο μορφές κωδικοποιούν τα ίδια 32 bytes.

Είναι το HMAC-SHA256 ίδιο με το SHA-256 της συνένωσης του κλειδιού και του μηνύματος;

Όχι. Το HMAC κατακερματίζει το μήνυμα δύο φορές με εσωτερικά και εξωτερικά κλειδιά συμπλήρωσης, προστατεύοντας έτσι από επιθέσεις επέκτασης μήκους. Η συνένωση του κλειδιού και του μηνύματος και ο εφάπαξ κατακερματισμός δίνουν διαφορετικό και ασθενέστερο αποτέλεσμα.

Πώς πρέπει να συγκρίνω υπογραφές στον κώδικά μου;

Χρησιμοποιήστε μια συνάρτηση σύγκρισης σταθερού χρόνου, όπως τη crypto.timingSafeEqual στο Node.js ή την hmac.compare_digest στην Python. Μια συνηθισμένη σύγκριση συμβολοσειρών μπορεί να αποκαλύψει πληροφορίες χρονισμού σχετικά με την αναμενόμενη ετικέτα.

Πόσο μεγάλο μπορεί να είναι το μήνυμα;

Το μήνυμα και το κλειδί μαζί μπορούν να έχουν έως 5 MiB κειμένου. Αυτό καλύπτει τα συνηθισμένα payload webhook και τα αιτήματα API.

Σχετικά με το OneClick Pro

Το OneClick Pro είναι μια δωρεάν συλλογή με περισσότερα από 150 διαδικτυακά εργαλεία για καθημερινή εργασία: μετατροπή εικόνων και μονάδων, μορφοποίηση και επικύρωση κώδικα, έλεγχος τομέων και SEO, καθώς και εργασία με κείμενο, ημερομηνίες και αριθμούς. Κάθε εργαλείο λειτουργεί χωρίς εγγραφή ή συνδρομή, και ό,τι εισάγετε χρησιμοποιείται μόνο για τον υπολογισμό του αποτελέσματός σας και δεν αποθηκεύεται ποτέ. Χρησιμοποιήστε το ως γρήγορη εργαλειοθήκη για μεμονωμένες εργασίες ή αποθηκεύστε στα αγαπημένα τα εργαλεία που χρησιμοποιείτε καθημερινά.