Node.js šifravimo modulis supaprastina kriptografinių operacijų atlikimo procesą. Štai kaip juo naudotis.

Kriptografija yra komunikacijos ir duomenų apsaugos praktika, konvertuojant juos į formatus, kuriuos gali iššifruoti tik įgaliotos šalys.

Node.js kriptovaliuta modulis yra integruotas modulis, teikiantis kriptografines funkcijas Node.js programoms. Ji siūlo daugybę kriptografinių galimybių, įskaitant šifravimą, iššifravimą, maišą, skaitmeninius parašus, saugų atsitiktinių skaičių generavimą ir kt.

Čia išnagrinėsite įvairias Node.js šifravimo modulio programas ir kaip galite jas naudoti savo programoms apsaugoti.

Maiša

Maišos keitimas yra vienpusis kriptografinis metodas kurį galite naudoti norėdami paversti nurodytą raktą ar eilutę į fiksuoto dydžio išvestį, vadinamą maiša arba santrauka.

Maiša yra vienpusė funkcija, reiškianti, kad kai sumaišote raktą arba eilutę, negalite gauti pradinės vertės iš sugeneruotos maišos.

Node.js šifravimo modulis palaiko įvairias maišos funkcijas, tokias kaip SHA-256, SHA-512, MD5 ir kt.

instagram viewer

Galite maišyti duomenis naudodami kriptovaliutų modulį sukurti Hash metodas, kuris naudoja maišos algoritmą kaip argumentą. Metodas grąžina a Maiša objektas, kurį galite naudoti duomenims maišyti naudodami atnaujinti ir virškinti metodus.

Pavyzdžiui:

konst kriptovaliuta = reikalauti("kriptovaliuta");

konst duomenys = "Slaptažodis";

// maišos objekto kūrimas
konst hashAlgo = crypto.createHash("sha256")

// perduodant duomenis, kuriems reikia maišyti
hashAlgo.update (duomenys);

// Maišos kūrimas reikiamu formatu
konst hash = hashAlgo.digest('hex');

konsolė.log(`Hašas: ${hash}`);

Aukščiau pateiktame pavyzdyje kriptovaliutų modulis sukurti Hash sukūrė maišos objektą su sha256 maišos algoritmas. The atnaujinti metodas maišos objekte paima įvesties duomenis ir sumaišo juos. Tada virškinti metodas paima kodavimo parametrą, nurodantį išvesties maišos reikšmės formatą, ir grąžina maišą nurodytu formatu (šešiakampis).

Maišos naudojimas yra naudingas norint patikrinti duomenų vientisumą, slaptažodžių saugojimą, skaitmeninius parašus ir kt.

Atsitiktinių duomenų generavimas

Kriptografiškai saugūs atsitiktiniai duomenys dažnai reikalingi kriptografijoje, žaidimuose ir bandymuose įvairiais naudojimo atvejais.

Kriptografijoje galite naudoti atsitiktinius duomenis, kad generuotumėte raktus, druskas ir inicijavimo vektorius šifravimo ir iššifravimo algoritmams.

Žaidime galite naudoti atsitiktinius duomenis, kad generuotumėte žaidimo lygius, simbolius, elementus ir daugiau, kad išvengtumėte sukčiavimo ir įsitikintumėte, kad žaidimas nėra nuspėjamas.

Testuodami galite jį naudoti norėdami imituoti realaus pasaulio scenarijus ir kraštutinius atvejus.

Atsitiktinius duomenis galite generuoti naudodami Node.js šifravimo modulį atsitiktiniai baitai metodas. Šis metodas naudoja skaičių kaip argumentą ir grąžina atsitiktinių baitų buferį.

Šis skaičius rodo baitų dydį, kurį sugeneruos metodas. Tačiau skaičius neturi būti didesnis nei 2³¹ - 1 (2147483647), kuri yra didžiausia reikšmė, kurią galima pavaizduoti 32 bitų sveikuoju skaičiumi.

Pavyzdžiui:

konst kriptovaliuta = reikalauti("kriptovaliuta");

// sukurti atsitiktinius baitus
konst randomBytes = crypto.randomBytes(32);

// konvertuoti į hex
konst randomString = randomBytes.toString("hex");

konsolė.log (randomString); //įregistruoja atsitiktinę eilutę į konsolę

Aukščiau pateiktas kodo blokas generuoja ir registruoja atsitiktinę 64 šešioliktainių simbolių (32 baitų) eilutę į konsolę.

Kriptografiškai saugių atsitiktinių duomenų generavimas yra svarbus, nes taip užtikrinama, kad atsitiktiniai duomenys nebūtų nuspėjami ir užpuolikai negalėtų jais manipuliuoti ar atspėti.

Šifravimas ir iššifravimas Node.js

Šifravimas yra paprasto teksto pavertimo neįskaitoma forma procesas (šifruotas tekstas), naudojant šifravimo algoritmą ir slaptąjį raktą.

Iššifravimas yra atvirkštinis šifravimas. Tai šifruoto teksto konvertavimas atgal į paprastą tekstą naudojant tą patį šifravimo algoritmą ir raktą.

Node.js šifravimo modulis palaiko įvairius šifravimo ir iššifravimo algoritmus, įskaitant AES (Advanced Encryption Standard), DES (duomenų šifravimo standartą) ir RSA (Rivest–Shamir–Adleman).

Kaip užšifruoti duomenis Node.js naudojant šifravimo modulį

Galite užšifruoti duomenis naudodami crypto.createCipheriv() metodas, kuris kaip įvestį paima šifravimo algoritmą, slaptąjį raktą ir inicijavimo vektorių. Slaptasis raktas priklauso nuo jūsų naudojamo šifravimo algoritmo. Pavyzdžiui, už aes-256 algoritmas in CBC režimu, rakto ilgis turi būti 32 baitai.

Metodas grąžina a Šifravimas objektą, kurį galite naudoti duomenims užšifruoti naudodami atnaujinti () ir galutinis () metodus. Šifruoti duomenys paprastai pateikiami kaip šešioliktainė eilutė arba buferis.

Pavyzdžiui:

konst kriptovaliuta = reikalauti("kriptovaliuta");

// Sukurkite slaptą šifravimo ir iššifravimo raktą.
konst secretKey = crypto.randomBytes(32);

// Sugeneruokite inicijavimo vektorių
konst iv = crypto.randomBytes(16);

// šifruojami duomenys
konst paprastas tekstas = "Tai slapta žinutė";

// sukurti šifro objektą
konst šifras = crypto.createCipheriv("aes-256-cbc", slaptasis raktas, iv);

// užšifruoti duomenis
leisti encryptedText = cipher.update (paprastas tekstas, "utf-8", "hex");

// užbaigti šifravimą
encryptedText += cipher.final("hex");

konsolė.log (šifruotas tekstas);

Aukščiau pateiktame pavyzdyje parodyta, kaip galite užšifruoti paprastą tekstą naudodami aes-256 CBC režimu, naudodami šifravimo modulį. Jis generuoja slaptąjį raktą ir inicijavimo vektorių, naudodamas crypto.randomBytes metodas. Tada sukuria šifro objektą, naudodamas crypto.createCipheriv metodą ir užšifruoja paprastą tekstinį pranešimą naudodamas šifras.atnaujinimas ir šifras.galutinis metodus.

Rezultatas yra šešioliktainė užšifruoto pranešimo eilutė, kurią galite iššifruoti naudodami tą patį slaptąjį raktą ir IV.

Kaip iššifruoti duomenis Node.js naudojant šifravimo modulį

Užšifruotus duomenis galite iššifruoti naudodami šifravimo modulį crypto.createDecipheriv() metodas, kuris kaip įvestį paima iššifravimo algoritmą, slaptąjį raktą ir inicijavimo vektorių. Metodas grąžina a Iššifruoti objektą, kurį galite naudoti duomenims iššifruoti naudodami Decipher.update() ir Decipher.final() metodus.

Pavyzdžiui:

// sukurti iššifravimo objektą
konst dešifruoti = crypto.createDecipheriv("aes-256-cbc", slaptasis raktas, iv);

// iššifruoti duomenis
leisti decryptedText = decrypted.update (šifruotas tekstas, "hex", "utf-8");

// užbaigti iššifravimą
decryptedText += decrypted.final("utf-8");

konsolė.log (decryptedText); // Tai slapta žinutė

Aukščiau pateiktame pavyzdyje parodyta, kaip galite iššifruoti užšifruotus duomenis naudodami tą patį algoritmą, slaptąjį raktą ir inicijavimo vektorių, su kuriuo juos užšifravote.

Jis sukuria iššifravimo objektą naudodamas crypto.createDecipheriv metodas. Tada jis iššifruoja duomenis naudodamas iššifruoti.atnaujinti metodas, kuris kaip argumentus priima duomenis, įvesties kodavimą ir išvesties kodavimą. Galiausiai jis užbaigia iššifravimo procesą naudodamas iššifruoti.galutinis metodas. Iškvietus šį metodą užtikrinama, kad objektas Decipher ilgiau gali būti naudojamas duomenims iššifruoti. Rezultatas yra paprasto teksto eilutė.

Šifravimas ir iššifravimas yra labai svarbūs siekiant apsaugoti jautrius duomenis ir išlaikyti jų konfidencialumą. Jie turi įvairių realaus pasaulio taikomųjų programų elektroninėje prekyboje, internetinėje bankininkystėje, duomenų saugykloje ir kt.

Kitos Node.js šifravimo modulio programos

Be maišos, kriptografiškai saugių atsitiktinių duomenų generavimo ir šifravimo bei iššifravimo, taip pat galite naudoti Node.js šifravimo modulis, skirtas pasirašyti ir patikrinti skaitmeninius parašus, kurie padeda patikrinti skaitmeninių parašų autentiškumą ir vientisumą dokumentus. Be to, kriptovaliutų modulį galite naudoti norėdami apsaugoti duomenų perdavimo srautus, kad būtų išvengta duomenų klastojimo ir pasiklausymo perdavimo metu.