Enkripsi PGP Mudah menggunakan Node.js - hapidzfadli
News Update
Loading...

Sabtu, 12 Desember 2020

Enkripsi PGP Mudah menggunakan Node.js

 Apa Itu Enkripsi Privasi yang Cukup Baik?

Enkripsi Pretty Good Privacy (PGP) adalah sistem enkripsi yang digunakan untuk mengirim dan menerima email terenkripsi dan file sensitif. Selama bertahun-tahun, PGP telah menjadi standar de facto untuk keamanan email.

Pada dasarnya, PGP menggunakan kombinasi dari dua bentuk enkripsi: enkripsi kunci simetris dan enkripsi kunci publik. Di bawah ini adalah diagram yang menggambarkan cara kerja enkripsi PGP:


Saya pikir kami akan menghentikan teori itu. Jika Anda ingin tahu lebih banyak tentang enkripsi PGP dan matematika terkait, silakan klik di sini .

Bagaimana cara menggunakan PGP dengan Node.JS?

Untuk penggunaan enkripsi PGP di Node.js, pertama-tama kita akan beralih ke komunitas dan memanfaatkan penggunaan openpgpperpustakaan.

OpenPGP adalah protokol yang mendefinisikan standar untuk PGP. openpgppaket mengimplementasikan protokol OpenPGP di Node.js

Siapkan Ruang Kerja Anda

Mari buat folder dan inisialisasi proyek baru

mkdir simple-pgp-example && cd simple-pgp-example && npm init -y

Sekarang instal openpgppaket menggunakannpm

npm i openpgp --save


Hasilkan Kunci

Kami sekarang akan membuat kunci PGP pribadi dan publik dengan OpenPGP. Anda dapat memilih kurva mana yang akan digunakan dalam kriptografi kurva eliptik. Selain itu, Anda dapat memilih untuk menentukan frasa sandi yang digunakan untuk mendekripsi file dan kunci pribadi.

//generate-keys.js
const openpgp = require('openpgp');
generate();
async function generate() {
const { privateKeyArmored, publicKeyArmored } = await openpgp.generateKey({
userIds: [{ name: 'anakin', email: 'anakin@tatooine.com' }],
curve: 'ed25519',
passphrase: 'obiwan'
});
}

Enkripsi

Sekarang, kita akan menulis file teks yang berisi informasi yang ingin kita enkripsi. Mari buat secret.txtdi direktori root dengan konten:

Luke, I am your father

Setelah selesai, kami akan menggunakan kunci publik dari penerima untuk mengenkripsi muatan. Mari buat file encrypt.jsyang akan melakukan hal itu.

// encrypt.js
const openpgp = require('openpgp');
const fs = require('fs');
const publicKeyArmored = fs.readFileSync('./public.key', {
encoding: 'utf8',
flag: 'r'
});
(async () => {
const plainData = fs.readFileSync('secret.txt');
const encrypted = await openpgp.encrypt({
message: openpgp.message.fromText(plainData),
publicKeys: (await openpgp.key.readArmored(publicKeyArmored)).keys
});
fs.writeFileSync('encrypted-secret.txt', encrypted.data);
console.log(`data has been encrypted...`);
})();

Ini harus membuat file baru bernama encrypted-secret.txtyang akan berisi muatan terenkripsi.

Dekripsi

Sekarang, sebagai penerima file, kami akan mencoba mendekripsi file yang dienkripsi. Untuk mendekripsi kami akan menggunakan kunci pribadi dan frasa sandi kami. Mari buat file bernama decrypt.jsuntuk tujuan ini

// decrypt.js
const openpgp = require('openpgp');
const fs = require('fs');
const privateKeyArmored = fs.readFileSync('./private.key');
const passphrase = `obiwan`;
(async () => {
const privateKey = (await openpgp.key.readArmored([privateKeyArmored]))
.keys[0];
await privateKey.decrypt(passphrase);
const encryptedData = fs.readFileSync('encrypted-secret.txt');
const decrypted = await openpgp.decrypt({
message: await openpgp.message.readArmored(encryptedData),
privateKeys: [privateKey]
});
console.log(`successfully decrypted data... 👇`);
console.log(decrypted.data);
})();

Setelah Anda menjalankan file ini. Keluarannya harus membaca pesan rahasia asli yang telah Anda enkripsi

Luke, I am your father

Sekarang, kita semua bisa berkata "Tidaaaaaaaaak ...". 😝 🤦‍♂️

Selain lelucon yang payah, kami telah berhasil mengenkripsi dan mendekripsi pesan menggunakan metode Enkripsi PGP.




Share with your friends

Give us your opinion

Notification
This is just an example, you can fill it later with your own note.
Done