Farih.co.id
Home Programming Panduan untuk Modul crypto Node.js

Panduan untuk Modul crypto Node.js

privacy lock mac

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 angka 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.

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

Anda dapat 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 crypto = require('crypto');

const data = "password";


const hashAlgo = crypto.createHash('sha256')


hashAlgo.update(data);


const hash = hashAlgo.digest('hex');

console.log(`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 crypto = require("crypto");


const randomBytes = crypto.randomBytes(32);


const randomString = randomBytes.toString("hex");

console.log(randomString);

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 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 crypto = require("crypto");


const secretKey = crypto.randomBytes(32);


const iv = crypto.randomBytes(16);


const plainText = "This is a secret message";


const cipher = crypto.createCipheriv("aes-256-cbc", secretKey, iv);


let encryptedText = cipher.update(plainText, "utf-8", "hex");


encryptedText += cipher.final("hex");

console.log(encryptedText);

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:

 
const decipher = crypto.createDecipheriv("aes-256-cbc", secretKey, iv);


let decryptedText = decipher.update(encryptedText, "hex", "utf-8");


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

console.log(decryptedText);

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, serta enkripsi dan dekripsi, Anda juga dapat menggunakan modul crypto Node.js untuk menandatangani dan memverifikasi tanda tangan digital, yang membantu memverifikasi keaslian dan integritas dokumen digital. Selain itu, Anda dapat menggunakan modul crypto untuk mengamankan streaming untuk transmisi data guna mencegah gangguan data dan penyadapan selama transmisi.

Comment
Share:

Leave a Reply

Your email address will not be published. Required fields are marked *

Ad