Modul crypto Node.js merampingkan proses melakukan operasi kriptografi. Berikut cara menggunakannya.

Kriptografi adalah praktik mengamankan komunikasi dan data dengan mengubahnya menjadi format yang hanya dapat diuraikan oleh pihak yang berwenang.

Node.js crypto modul adalah modul bawaan yang menyediakan fungsionalitas kriptografi ke aplikasi Node.js. Ini menawarkan berbagai kemampuan kriptografi, termasuk enkripsi, dekripsi, hashing, tanda tangan digital, pembuatan nomor acak yang aman, dan banyak lagi.

Di sini Anda akan menjelajahi berbagai aplikasi modul crypto Node.js dan bagaimana Anda dapat menggunakannya untuk mengamankan aplikasi Anda.

Hashing

Hashing adalah teknik kriptografi satu arah yang dapat Anda gunakan untuk mengubah kunci atau string tertentu menjadi keluaran berukuran tetap yang dikenal sebagai hash atau intisari.

Hashing adalah fungsi satu arah yang berarti ketika Anda melakukan hash pada kunci atau string, Anda tidak bisa mendapatkan nilai asli dari hash yang dihasilkan.

instagram viewer

Modul crypto Node.js mendukung berbagai fungsi hashing seperti SHA-256, SHA-512, MD5, dan lainnya.

Anda dapat melakukan hash data menggunakan modul crypto createHash metode, yang mengambil algoritma hashing sebagai argumen. Metode mengembalikan a Hash objek, yang dapat Anda gunakan untuk hash data menggunakan memperbarui Dan intisari metode.

Misalnya:

const kripto = memerlukan('kripto');

const data = "kata sandi";

// membuat objek hash
const hashAlgo = crypto.createHash('sha256')

// meneruskan data yang akan di-hash
hashAlgo.update (data);

// Membuat hash dalam format yang diperlukan
const hash = hashAlgo.digest('hex');

menghibur.catatan(`Hash: ${hash}`);

Dalam contoh di atas, modul crypto createHash membuat objek hashing dengan sha256 algoritma hashing. Itu memperbarui metode pada objek hash mengambil data input dan hash itu. Kemudian intisari metode mengambil parameter pengkodean, menentukan format nilai hash keluaran, dan mengembalikan hash dalam format yang ditentukan (hex).

Hashing berguna untuk memverifikasi integritas data, penyimpanan kata sandi, tanda tangan digital, dan lainnya.

Menghasilkan Data Acak

Data acak yang aman secara kriptografi sering diperlukan dalam kriptografi, game, dan pengujian untuk berbagai kasus penggunaan.

Dalam kriptografi, Anda dapat menggunakan data acak untuk menghasilkan kunci, garam, dan vektor inisialisasi untuk algoritme enkripsi dan dekripsi.

Dalam bermain game, Anda dapat menggunakan data acak untuk menghasilkan level game, karakter, item, dan lainnya untuk mencegah kecurangan dan memastikan game tidak dapat diprediksi.

Dalam pengujian, Anda dapat menggunakannya untuk mensimulasikan skenario dunia nyata dan kasus tepi.

Anda dapat menghasilkan data acak menggunakan modul crypto Node.js randomBytes metode. Metode ini mengambil nomor sebagai argumen dan mengembalikan buffer byte acak.

Angka ini mewakili ukuran byte yang akan dihasilkan oleh metode. Namun, jumlahnya tidak boleh lebih besar dari 2³¹ - 1 (2147483647), yang merupakan nilai maksimum yang dapat diwakili oleh bilangan bulat bertanda 32-bit.

Misalnya:

const kripto = memerlukan("kripto");

// buat byte acak
const randomBytes = crypto.randomBytes(32);

// ubah ke hex
const randomString = randomBytes.toString("hex");

menghibur.log (randomString); // mencatat string acak ke konsol

Blok kode di atas menghasilkan dan mencatat string acak 64 karakter heksadesimal (32 byte) ke konsol.

Menghasilkan data acak yang aman secara kriptografis adalah penting karena memastikan bahwa data acak tidak dapat diprediksi dan penyerang tidak dapat memanipulasi atau menebaknya.

Enkripsi dan Dekripsi di Node.js

Enkripsi adalah proses mengubah teks biasa menjadi bentuk yang tidak dapat dibaca (teks sandi) menggunakan algoritma enkripsi dan kunci rahasia.

Dekripsi adalah kebalikan dari enkripsi. Ini adalah proses mengubah teks sandi kembali menjadi teks biasa menggunakan algoritma dan kunci enkripsi yang sama.

Modul crypto Node.js menyediakan dukungan untuk berbagai algoritma enkripsi dan dekripsi, termasuk AES (Advanced Encryption Standard), DES (Data Encryption Standard), dan RSA (Rivest–Shamir–Adleman).

Cara Mengenkripsi Data di Node.js Menggunakan Modul crypto

Anda dapat mengenkripsi data menggunakan crypto.createCipheriv() metode, yang mengambil algoritma enkripsi, kunci rahasia, dan vektor inisialisasi sebagai masukan. Kunci rahasia bergantung pada algoritme enkripsi yang Anda gunakan. Misalnya, untuk algoritma aes-256 di dalam CBC mode, panjang kunci harus 32 byte.

Metode mengembalikan a Sandi objek, yang dapat Anda gunakan untuk mengenkripsi data menggunakan memperbarui() Dan terakhir() metode. Data terenkripsi biasanya direpresentasikan sebagai string heksadesimal atau buffer.

Misalnya:

const kripto = memerlukan("kripto");

// Hasilkan kunci rahasia untuk enkripsi dan dekripsi.
const secretKey = crypto.randomBytes(32);

// Menghasilkan vektor inisialisasi
const iv = crypto.randomBytes(16);

// data yang akan dienkripsi
const plainText = "Ini adalah pesan rahasia";

// buat objek sandi
const sandi = crypto.createCipheriv("aes-256-cbc", kunci rahasia, iv);

// mengenkripsi data
membiarkan encryptText = cipher.update (plainText, "utf-8", "hex");

// selesaikan enkripsi
teks terenkripsi += cipher.final("hex");

menghibur.log (teks terenkripsi);

Contoh di atas menunjukkan bagaimana Anda dapat mengenkripsi teks biasa menggunakan aes-256 dalam mode CBC menggunakan modul crypto. Ini menghasilkan kunci rahasia dan vektor inisialisasi menggunakan crypto.randomBytes metode. Kemudian buat objek cipher menggunakan crypto.createCipheriv metode, dan mengenkripsi pesan teks biasa menggunakan cipher.update Dan cipher.final metode.

Hasilnya adalah string heksadesimal dari pesan terenkripsi, yang dapat Anda dekripsi menggunakan kunci rahasia dan IV yang sama.

Cara Mendekripsi Data di Node.js Menggunakan Modul crypto

Anda dapat mendekripsi data terenkripsi menggunakan modul crypto crypto.createDecipheriv() metode, yang mengambil algoritma dekripsi, kunci rahasia, dan vektor inisialisasi sebagai masukan. Metode mengembalikan a Menguraikan objek, yang dapat Anda gunakan untuk mendekripsi data menggunakan Menguraikan.update() Dan Menguraikan.final() metode.

Misalnya:

// buat objek Pengurai
const menguraikan = crypto.createDecipheriv("aes-256-cbc", kunci rahasia, iv);

// mendekripsi data
membiarkan decryptedText = decipher.update (encryptedText, "hex", "utf-8");

// menyelesaikan dekripsi
decryptedText += decipher.final("utf-8");

menghibur.log (DecryptedText); // Ini adalah pesan rahasia

Contoh di atas menunjukkan bagaimana Anda dapat mendekripsi data terenkripsi menggunakan algoritme, kunci rahasia, dan vektor inisialisasi yang sama dengan yang Anda gunakan untuk mengenkripsinya.

Itu membuat objek Pengurai menggunakan crypto.createDecipheriv metode. Kemudian mendekripsi data menggunakan decipher.update metode, yang mengambil data, pengkodean input, dan pengkodean output sebagai argumen. Akhirnya, itu mengakhiri proses dekripsi menggunakan menguraikan.final metode. Memanggil metode ini memastikan bahwa objek Pengurai dapat digunakan lagi untuk mendekripsi data. Hasilnya adalah string teks biasa.

Enkripsi dan dekripsi sangat penting untuk melindungi data sensitif dan menjaga kerahasiaannya. Mereka memiliki berbagai aplikasi dunia nyata dalam e-commerce, perbankan online, penyimpanan data, dan banyak lagi.

Aplikasi Lain dari Modul crypto Node.js

Selain hashing, menghasilkan data acak yang aman secara kriptografis, dan enkripsi dan dekripsi, Anda juga dapat menggunakan Modul crypto Node.js untuk menandatangani dan memverifikasi tanda tangan digital, yang membantu memverifikasi keaslian dan integritas digital dokumen. Selain itu, Anda dapat menggunakan modul crypto untuk mengamankan streaming untuk transmisi data guna mencegah gangguan data dan penyadapan selama transmisi.