Moduł kryptograficzny Node.js usprawnia proces wykonywania operacji kryptograficznych. Oto jak go używać.
Kryptografia to praktyka zabezpieczania komunikacji i danych poprzez konwertowanie ich na formaty, które mogą rozszyfrować tylko upoważnione osoby.
Node.js krypto module to wbudowany moduł, który zapewnia funkcje kryptograficzne aplikacjom Node.js. Oferuje szereg możliwości kryptograficznych, w tym szyfrowanie, deszyfrowanie, mieszanie, podpisy cyfrowe, bezpieczne generowanie liczb losowych i wiele innych.
Tutaj zapoznasz się z różnymi aplikacjami modułu kryptograficznego Node.js i jak możesz ich użyć do zabezpieczenia swoich aplikacji.
Haszowanie
Haszowanie to jednokierunkowa technika kryptograficzna którego można użyć do przekształcenia danego klucza lub ciągu znaków w dane wyjściowe o stałym rozmiarze, znane jako skrót lub skrót.
Haszowanie jest funkcją jednokierunkową, co oznacza, że podczas haszowania klucza lub łańcucha nie można uzyskać oryginalnej wartości z wygenerowanego skrótu.
Moduł kryptograficzny Node.js obsługuje różne funkcje mieszania, takie jak SHA-256, SHA-512, MD5 i inne.
Możesz haszować dane za pomocą modułu kryptograficznego utwórz Hash Metoda, która przyjmuje algorytm mieszania jako argument. Metoda zwraca a Haszysz obiekt, którego można użyć do haszowania danych za pomocą aktualizacja I strawić metody.
Na przykład:
konst krypto = wymagać(„krypto”);
konst dane = "hasło";
// tworzenie obiektu haszującego
konst hashAlgo = crypto.createHash('sha256')// przekazanie danych do haszowania
hashAlgo.update (dane);// Tworzenie skrótu w wymaganym formacie
konst hash = hashAlgo.skrót('klątwa');
konsola.dziennik(`Hasz: ${hash}`);
W powyższym przykładzie moduł kryptograficzny utwórz Hash utworzył obiekt haszujący z sha256 algorytm haszujący. The aktualizacja Metoda na obiekcie hash pobiera dane wejściowe i miesza je. A później strawić Metoda pobiera parametr kodowania, określając wyjściowy format wartości skrótu i zwraca skrót w określonym formacie (klątwa).
Haszowanie jest przydatne do weryfikowania integralności danych, przechowywania haseł, podpisów cyfrowych i nie tylko.
Generowanie losowych danych
Kryptograficznie zabezpieczone losowe dane są często wymagane w kryptografii, grach i testowaniu różnych przypadków użycia.
W kryptografii możesz używać losowych danych do generowania kluczy, soli i wektorów inicjujących dla algorytmów szyfrowania i deszyfrowania.
W grach możesz używać losowych danych do generowania poziomów gry, postaci, przedmiotów i innych elementów, aby zapobiegać oszustwom i upewnić się, że gra nie jest przewidywalna.
W testach można go używać do symulacji rzeczywistych scenariuszy i przypadków skrajnych.
Możesz generować losowe dane za pomocą modułu kryptograficznego Node.js losowe bajty metoda. Ta metoda przyjmuje liczbę jako argument i zwraca bufor losowych bajtów.
Ta liczba reprezentuje rozmiar bajtów, które wygeneruje metoda. Jednak liczba nie może być większa niż 2³¹ - 1 (2147483647), czyli maksymalną wartość, jaką może przedstawić 32-bitowa liczba całkowita ze znakiem.
Na przykład:
konst krypto = wymagać(„krypto”);
// utwórz losowe bajty
konst randomBytes = crypto.randomBytes(32);// przekonwertuj na szesnastkowy
konst randomString = randomBytes.toString("klątwa");
konsola.log (randomString); //loguje losowy ciąg znaków do konsoli
Powyższy blok kodu generuje i rejestruje losowy ciąg 64 znaków szesnastkowych (32 bajty) w konsoli.
Generowanie danych losowych zabezpieczonych kryptograficznie jest ważne, ponieważ gwarantuje, że dane losowe nie są przewidywalne, a osoby atakujące nie mogą nimi manipulować ani odgadywać.
Szyfrowanie i deszyfrowanie w Node.js
Szyfrowanie to proces przekształcania zwykłego tekstu w postać nieczytelną (zaszyfrowany tekst) przy użyciu algorytmu szyfrowania i tajnego klucza.
Deszyfrowanie jest odwrotnością szyfrowania. Jest to proces konwersji zaszyfrowanego tekstu z powrotem na zwykły tekst przy użyciu tego samego algorytmu szyfrowania i klucza.
Moduł kryptograficzny Node.js zapewnia obsługę różnych algorytmów szyfrowania i deszyfrowania, w tym AES (Advanced Encryption Standard), DES (Data Encryption Standard) i RSA (Rivest – Shamir – Adleman).
Jak zaszyfrować dane w Node.js za pomocą modułu crypto
Możesz szyfrować dane za pomocą crypto.createCipheriv() metoda, która przyjmuje algorytm szyfrowania, tajny klucz i wektor inicjujący jako dane wejściowe. Tajny klucz zależy od używanego algorytmu szyfrowania. Na przykład dla algorytm aes-256 W CBC w trybie, długość klucza musi wynosić 32 bajty.
Metoda zwraca a Szyfr obiekt, którego można użyć do zaszyfrowania danych za pomocą aktualizacja() I finał() metody. Zaszyfrowane dane są zwykle reprezentowane jako ciąg szesnastkowy lub bufor.
Na przykład:
konst krypto = wymagać(„krypto”);
// Wygeneruj tajny klucz do szyfrowania i deszyfrowania.
konst SecretKey = crypto.randomBytes(32);// Wygeneruj wektor inicjujący
konst iv = crypto.randomBytes(16);// dane do zaszyfrowania
konst zwykły tekst = „To tajna wiadomość”;// utwórz obiekt szyfru
konst cipher = crypto.createCipheriv("aes-256-cbc", sekretny klucz, iv);// zaszyfruj dane
pozwalać encryptedText = cipher.update (zwykły tekst, "utf-8", "klątwa");// zakończ szyfrowanie
zaszyfrowanyTekst += szyfr.final("klątwa");
konsola.log (zaszyfrowany tekst);
Powyższy przykład pokazuje, jak można zaszyfrować zwykły tekst za pomocą aes-256 w trybie CBC za pomocą modułu crypto. Generuje tajny klucz i wektor inicjujący za pomocą crypto.randomBytes metoda. Następnie tworzy obiekt szyfrowania za pomocą crypto.createCipheriv metoda i szyfruje zwykłą wiadomość tekstową przy użyciu metody szyfr.aktualizacja I szyfr.końcowy metody.
Wynikiem jest ciąg szesnastkowy zaszyfrowanej wiadomości, którą można odszyfrować przy użyciu tego samego tajnego klucza i IV.
Jak odszyfrować dane w Node.js za pomocą modułu crypto
Możesz odszyfrować zaszyfrowane dane za pomocą modułu kryptograficznego crypto.createDecipheriv() metoda, która przyjmuje algorytm deszyfrowania, tajny klucz i wektor inicjujący jako dane wejściowe. Metoda zwraca a Odszyfrować obiekt, którego możesz użyć do odszyfrowania danych za pomocą Odszyfruj.aktualizacja() I Odszyfruj.final() metody.
Na przykład:
// utwórz obiekt Odszyfruj
konst decipher = crypto.createDecipheriv("aes-256-cbc", sekretny klucz, iv);// odszyfrować dane
pozwalać decryptedText = decipher.update (zaszyfrowany tekst, "klątwa", "utf-8");// zakończ deszyfrowanie
odszyfrowanyTekst += odszyfrować.końcowy("utf-8");
konsola.log (odszyfrowany tekst); // To jest tajna wiadomość
Powyższy przykład pokazuje, jak można odszyfrować zaszyfrowane dane przy użyciu tego samego algorytmu, tajnego klucza i wektora inicjującego, za pomocą którego zostały zaszyfrowane.
Tworzy obiekt Decipher za pomocą crypto.createDecipheriv metoda. Następnie odszyfrowuje dane za pomocą odszyfrować.aktualizacja metoda, która przyjmuje dane, kodowanie wejściowe i kodowanie wyjściowe jako argumenty. Na koniec kończy proces odszyfrowywania za pomocą rozszyfrować.końcowy metoda. Wywołanie tej metody zapewnia, że obiekt Decipher może być już używany do odszyfrowywania danych. Wynikiem jest zwykły ciąg tekstowy.
Szyfrowanie i deszyfrowanie są kluczowe dla ochrony wrażliwych danych i zachowania ich poufności. Mają różne rzeczywiste zastosowania w handlu elektronicznym, bankowości internetowej, przechowywaniu danych i nie tylko.
Inne zastosowania modułu kryptograficznego Node.js
Oprócz haszowania, generowania losowych danych zabezpieczonych kryptograficznie oraz szyfrowania i deszyfrowania, możesz także użyć Moduł kryptograficzny Node.js do podpisywania i weryfikacji podpisów cyfrowych, które pomagają zweryfikować autentyczność i integralność cyfrową dokumenty. Dodatkowo możesz użyć modułu kryptograficznego do zabezpieczenia strumieni do transmisji danych, aby zapobiec manipulowaniu danymi i podsłuchiwaniu podczas transmisji.