Η μονάδα κρυπτογράφησης Node.js απλοποιεί τη διαδικασία εκτέλεσης κρυπτογραφικών λειτουργιών. Δείτε πώς να το χρησιμοποιήσετε.

Η κρυπτογραφία είναι η πρακτική της διασφάλισης της επικοινωνίας και των δεδομένων με τη μετατροπή τους σε μορφές που μόνο εξουσιοδοτημένα μέρη μπορούν να αποκρυπτογραφήσουν.

Το Node.js κρυπτο Το module είναι μια ενσωματωμένη λειτουργική μονάδα που παρέχει κρυπτογραφική λειτουργία στις εφαρμογές Node.js. Προσφέρει μια σειρά από κρυπτογραφικές δυνατότητες, όπως κρυπτογράφηση, αποκρυπτογράφηση, κατακερματισμός, ψηφιακές υπογραφές, ασφαλής δημιουργία τυχαίων αριθμών και πολλά άλλα.

Εδώ θα εξερευνήσετε τις διάφορες εφαρμογές της μονάδας κρυπτογράφησης Node.js και πώς μπορείτε να τις χρησιμοποιήσετε για να ασφαλίσετε τις εφαρμογές σας.

Κατακερματισμός

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

Ο κατακερματισμός είναι μια μονόδρομη συνάρτηση που σημαίνει ότι όταν κατακερματίζετε ένα κλειδί ή συμβολοσειρά, δεν μπορείτε να λάβετε την αρχική τιμή από τον κατακερματισμό που δημιουργήθηκε.

Η μονάδα κρυπτογράφησης Node.js υποστηρίζει διάφορες λειτουργίες κατακερματισμού όπως SHA-256, SHA-512, MD5 και άλλες.

Μπορείτε να κατακερματίσετε δεδομένα χρησιμοποιώντας τη μονάδα κρυπτογράφησης createHash μέθοδο, η οποία παίρνει τον αλγόριθμο κατακερματισμού ως όρισμα. Η μέθοδος επιστρέφει a Χασίσι αντικείμενο, το οποίο μπορείτε να χρησιμοποιήσετε για να κατακερματίσετε τα δεδομένα χρησιμοποιώντας το εκσυγχρονίζω και σύνοψη μεθόδους.

Για παράδειγμα:

συνθ κρυπτό = απαιτώ("κρυπτο");

συνθ δεδομένα = "Κωδικός πρόσβασης";

// δημιουργία αντικειμένου κατακερματισμού
συνθ hashAlgo = crypto.createHash('sha256')

// μεταβίβαση των δεδομένων προς κατακερματισμό
hashAlgo.update (δεδομένα);

// Δημιουργία του κατακερματισμού στην απαιτούμενη μορφή
συνθ hash = hashAlgo.digest('γοητεύω');

κονσόλα.κούτσουρο(`Hash: ${hash}`);

Στο παραπάνω παράδειγμα, η μονάδα κρυπτογράφησης createHash δημιούργησε ένα αντικείμενο κατακερματισμού με το sha256 αλγόριθμος κατακερματισμού. ο εκσυγχρονίζω μέθοδος στο αντικείμενο κατακερματισμού λαμβάνει τα δεδομένα εισόδου και τα κατακερματίζει. Μετά το σύνοψη μέθοδος παίρνει μια παράμετρο κωδικοποίησης, καθορίζοντας τη μορφή τιμής κατακερματισμού εξόδου και επιστρέφει τον κατακερματισμό στην καθορισμένη μορφή (γοητεύω).

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

Δημιουργία τυχαίων δεδομένων

Τα κρυπτογραφικά ασφαλή τυχαία δεδομένα απαιτούνται συχνά στην κρυπτογραφία, τα παιχνίδια και τις δοκιμές για διάφορες περιπτώσεις χρήσης.

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

Στο gaming, μπορείτε να χρησιμοποιήσετε τυχαία δεδομένα για να δημιουργήσετε επίπεδα παιχνιδιού, χαρακτήρες, αντικείμενα και πολλά άλλα για να αποτρέψετε την εξαπάτηση και να βεβαιωθείτε ότι το παιχνίδι δεν είναι προβλέψιμο.

Κατά τη δοκιμή, μπορείτε να το χρησιμοποιήσετε για την προσομοίωση πραγματικών σεναρίων και περιπτώσεων αιχμής.

Μπορείτε να δημιουργήσετε τυχαία δεδομένα χρησιμοποιώντας τη μονάδα κρυπτογράφησης Node.js τυχαία Bytes μέθοδος. Αυτή η μέθοδος παίρνει έναν αριθμό ως όρισμα και επιστρέφει ένα buffer τυχαίων byte.

Αυτός ο αριθμός αντιπροσωπεύει το μέγεθος των byte που θα δημιουργήσει η μέθοδος. Ωστόσο, ο αριθμός δεν πρέπει να είναι μεγαλύτερος από 2³¹ - 1 (2147483647), η οποία είναι η μέγιστη τιμή που μπορεί να αναπαρασταθεί από έναν υπογεγραμμένο ακέραιο αριθμό 32 bit.

Για παράδειγμα:

συνθ κρυπτό = απαιτώ("κρυπτο");

// δημιουργία τυχαίων byte
συνθ randomBytes = crypto.randomBytes(32);

// μετατροπή σε εξάγωνο
συνθ randomString = randomBytes.toString("γοητεύω");

κονσόλα.log (randomString); //καταγράφει τυχαία συμβολοσειρά στην κονσόλα

Το παραπάνω μπλοκ κώδικα δημιουργεί και καταγράφει μια τυχαία συμβολοσειρά 64 δεκαεξαδικών χαρακτήρων (32 byte) στην κονσόλα.

Η δημιουργία κρυπτογραφικά ασφαλών τυχαίων δεδομένων είναι σημαντική επειδή διασφαλίζει ότι τα τυχαία δεδομένα δεν είναι προβλέψιμα και ότι οι εισβολείς δεν μπορούν να τα χειριστούν ή να τα μαντέψουν.

Κρυπτογράφηση και αποκρυπτογράφηση στο Node.js

Η κρυπτογράφηση είναι η διαδικασία μετατροπής απλού κειμένου σε μη αναγνώσιμη μορφή (κρυπτογραφημένο κείμενο) χρησιμοποιώντας έναν αλγόριθμο κρυπτογράφησης και ένα μυστικό κλειδί.

Η αποκρυπτογράφηση είναι το αντίστροφο της κρυπτογράφησης. Είναι η διαδικασία μετατροπής του κρυπτογραφημένου κειμένου ξανά σε απλό κείμενο χρησιμοποιώντας τον ίδιο αλγόριθμο και κλειδί κρυπτογράφησης.

Η μονάδα κρυπτογράφησης Node.js παρέχει υποστήριξη για διάφορους αλγόριθμους κρυπτογράφησης και αποκρυπτογράφησης, συμπεριλαμβανομένων των AES (Advanced Encryption Standard), DES (Data Encryption Standard) και RSA (Rivest–Shamir–Adleman).

Πώς να κρυπτογραφήσετε δεδομένα στο Node.js χρησιμοποιώντας τη μονάδα κρυπτογράφησης

Μπορείτε να κρυπτογραφήσετε δεδομένα χρησιμοποιώντας το crypto.createCipheriv() μέθοδος, η οποία λαμβάνει ως είσοδο τον αλγόριθμο κρυπτογράφησης, το μυστικό κλειδί και ένα διάνυσμα αρχικοποίησης. Το μυστικό κλειδί εξαρτάται από τον αλγόριθμο κρυπτογράφησης που χρησιμοποιείτε. Για παράδειγμα, για τον αλγόριθμο aes-256 σε ΚΤΚ λειτουργία, το μήκος του κλειδιού πρέπει να είναι 32 byte.

Η μέθοδος επιστρέφει a Κρυπτογράφημα αντικείμενο, το οποίο μπορείτε να χρησιμοποιήσετε για να κρυπτογραφήσετε τα δεδομένα χρησιμοποιώντας το εκσυγχρονίζω() και τελικός() μεθόδους. Τα κρυπτογραφημένα δεδομένα αντιπροσωπεύονται συνήθως ως δεκαεξαδική συμβολοσειρά ή προσωρινή μνήμη.

Για παράδειγμα:

συνθ κρυπτό = απαιτώ("κρυπτο");

// Δημιουργία μυστικού κλειδιού για κρυπτογράφηση και αποκρυπτογράφηση.
συνθ secretKey = crypto.randomBytes(32);

// Δημιουργήστε ένα διάνυσμα αρχικοποίησης
συνθ iv = crypto.randomBytes(16);

// δεδομένα προς κρυπτογράφηση
συνθ απλό κείμενο = "Αυτό είναι ένα μυστικό μήνυμα";

// δημιουργία αντικειμένου κρυπτογράφησης
συνθ cipher = crypto.createCipheriv("aes-256-cbc", secretKey, iv);

// κρυπτογράφηση των δεδομένων
αφήνω encryptedText = cipher.update (απλό κείμενο, "utf-8", "γοητεύω");

// οριστικοποίηση της κρυπτογράφησης
encryptedText += cipher.final("γοητεύω");

κονσόλα.log (encryptedText);

Το παραπάνω παράδειγμα δείχνει πώς μπορείτε να κρυπτογραφήσετε απλό κείμενο χρησιμοποιώντας το aes-256 σε λειτουργία CBC χρησιμοποιώντας τη μονάδα κρυπτογράφησης. Δημιουργεί ένα μυστικό κλειδί και ένα διάνυσμα αρχικοποίησης χρησιμοποιώντας το crypto.randomBytes μέθοδος. Στη συνέχεια δημιουργεί ένα αντικείμενο κρυπτογράφησης χρησιμοποιώντας το crypto.createCipheriv μέθοδο και κρυπτογραφεί το απλό μήνυμα κειμένου χρησιμοποιώντας το cipher.update και κρυπτογράφηση.τελικό μεθόδους.

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

Πώς να αποκρυπτογραφήσετε δεδομένα στο Node.js χρησιμοποιώντας τη μονάδα κρυπτογράφησης

Μπορείτε να αποκρυπτογραφήσετε κρυπτογραφημένα δεδομένα χρησιμοποιώντας τη μονάδα κρυπτογράφησης crypto.createDecipheriv() μέθοδος, η οποία λαμβάνει ως είσοδο τον αλγόριθμο αποκρυπτογράφησης, το μυστικό κλειδί και ένα διάνυσμα αρχικοποίησης. Η μέθοδος επιστρέφει a Αποκρυπτογραφώ αντικείμενο, το οποίο μπορείτε να χρησιμοποιήσετε για να αποκρυπτογραφήσετε τα δεδομένα χρησιμοποιώντας το Decipher.update() και Decipher.final() μεθόδους.

Για παράδειγμα:

// δημιουργία αντικειμένου Decipher
συνθ decipher = crypto.createDecipheriv("aes-256-cbc", secretKey, iv);

// αποκρυπτογραφήστε τα δεδομένα
αφήνω decryptedText = decipher.update (encryptedText, "γοητεύω", "utf-8");

// οριστικοποίηση της αποκρυπτογράφησης
decryptedText += decipher.final("utf-8");

κονσόλα.log (decryptedText); // Αυτό είναι ένα μυστικό μήνυμα

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

Δημιουργεί ένα αντικείμενο Decipher χρησιμοποιώντας το crypto.createDecipheriv μέθοδος. Στη συνέχεια αποκρυπτογραφεί τα δεδομένα χρησιμοποιώντας το decipher.update μέθοδος, η οποία λαμβάνει ως ορίσματα τα δεδομένα, την κωδικοποίηση εισόδου και την κωδικοποίηση εξόδου. Τέλος, τερματίζει τη διαδικασία αποκρυπτογράφησης χρησιμοποιώντας το αποκρυπτογραφώ.τελικό μέθοδος. Η κλήση αυτής της μεθόδου διασφαλίζει ότι το αντικείμενο Decipher μπορεί να χρησιμοποιηθεί περισσότερο για την αποκρυπτογράφηση δεδομένων. Το αποτέλεσμα είναι μια συμβολοσειρά απλού κειμένου.

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

Άλλες εφαρμογές της μονάδας κρυπτογράφησης Node.js

Εκτός από τον κατακερματισμό, τη δημιουργία κρυπτογραφικά ασφαλών τυχαίων δεδομένων και την κρυπτογράφηση και την αποκρυπτογράφηση, μπορείτε επίσης να χρησιμοποιήσετε το Node.js crypto module για την υπογραφή και την επαλήθευση ψηφιακών υπογραφών, οι οποίες βοηθούν στην επαλήθευση της αυθεντικότητας και της ακεραιότητας των ψηφιακών έγγραφα. Επιπλέον, μπορείτε να χρησιμοποιήσετε τη μονάδα κρυπτογράφησης για να ασφαλίσετε ροές για μετάδοση δεδομένων για να αποτρέψετε την παραβίαση δεδομένων και την υποκλοπή δεδομένων κατά τη μετάδοση.