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.

instagram viewer

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.