Kriptografi Java - Mengenkripsi Data
Anda dapat mengenkripsi data yang diberikan menggunakan kelas Cipher dari javax.cryptopaket. Ikuti langkah-langkah yang diberikan di bawah ini untuk mengenkripsi data yang diberikan menggunakan Java.
Langkah 1: Buat objek KeyPairGenerator
Itu KeyPairGenerator kelas menyediakan getInstance() metode yang menerima variabel String yang mewakili algoritme penghasil kunci yang diperlukan dan mengembalikan objek KeyPairGenerator yang menghasilkan kunci.
Membuat KeyPairGenerator objek menggunakan getInstance() metode seperti yang ditunjukkan di bawah ini.
//Creating KeyPair generator object
KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("DSA");
Langkah 2: Inisialisasi objek KeyPairGenerator
Itu KeyPairGenerator kelas menyediakan metode bernama initialize()metode ini digunakan untuk menginisialisasi generator pasangan kunci. Metode ini menerima nilai integer yang mewakili ukuran kunci.
Inisialisasi objek KeyPairGenerator yang dibuat pada langkah sebelumnya menggunakan initialize() metode seperti yang ditunjukkan di bawah ini.
//Initializing the KeyPairGenerator
keyPairGen.initialize(2048);
Langkah 3: Buat KeyPairGenerator
Anda dapat menghasilkan KeyPair menggunakan generateKeyPair() metode dari KeyPairGeneratorkelas. Hasilkan pasangan kunci menggunakan metode ini seperti yang ditunjukkan di bawah ini.
//Generate the pair of keys
KeyPair pair = keyPairGen.generateKeyPair();
Langkah 4: Dapatkan kunci publik
Anda bisa mendapatkan kunci publik dari file KeyPair objek menggunakan getPublic() metode seperti yang ditunjukkan di bawah ini.
Dapatkan kunci publik menggunakan metode ini seperti yang ditunjukkan di bawah ini.
//Getting the public key from the key pair
PublicKey publicKey = pair.getPublic();
Langkah 5: Buat objek Cipher
Itu getInstance() metode dari Cipher kelas menerima variabel String yang mewakili transformasi yang diperlukan dan mengembalikan objek Cipher yang mengimplementasikan transformasi yang diberikan.
Buat objek Cipher menggunakan getInstance() metode seperti yang ditunjukkan di bawah ini.
//Creating a Cipher object
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
Langkah 6: Inisialisasi objek Cipher
Itu init() metode dari Cipher class menerima dua parameter, sebuah parameter integer yang mewakili mode operasi (encrypt / decrypt) dan, sebuah objek Key yang mewakili kunci publik.
Inisialisasi objek Cypher menggunakan init() metode seperti yang ditunjukkan di bawah ini.
//Initializing a Cipher object
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
Langkah 7: Tambahkan data ke objek Cipher
Itu update() metode kelas Cipher menerima array byte yang mewakili data yang akan dienkripsi dan memperbarui objek saat ini dengan data yang diberikan.
Perbarui objek Cipher yang diinisialisasi dengan meneruskan data ke update() metode dalam bentuk array byte seperti yang ditunjukkan di bawah ini.
//Adding data to the cipher
byte[] input = "Welcome to Tutorialspoint".getBytes();
cipher.update(input);
Langkah 8: Enkripsi data
Itu doFinal()metode kelas Cipher menyelesaikan operasi enkripsi. Oleh karena itu, selesaikan enkripsi menggunakan metode ini seperti yang ditunjukkan di bawah ini.
//Encrypting the data
byte[] cipherText = cipher.doFinal();
Contoh
Mengikuti program Java menerima teks dari pengguna, mengenkripsinya menggunakan algoritma RSA dan, mencetak format terenkripsi dari teks yang diberikan.
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.Signature;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
public class CipherSample {
public static void main(String args[]) throws Exception{
//Creating a Signature object
Signature sign = Signature.getInstance("SHA256withRSA");
//Creating KeyPair generator object
KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");
//Initializing the key pair generator
keyPairGen.initialize(2048);
//Generating the pair of keys
KeyPair pair = keyPairGen.generateKeyPair();
//Creating a Cipher object
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
//Initializing a Cipher object
cipher.init(Cipher.ENCRYPT_MODE, pair.getPublic());
//Adding data to the cipher
byte[] input = "Welcome to Tutorialspoint".getBytes();
cipher.update(input);
//encrypting the data
byte[] cipherText = cipher.doFinal();
System.out.println(new String(cipherText, "UTF8"));
}
}
Keluaran
Program di atas menghasilkan keluaran berikut -
Encrypted Text:
"???:]J_?]???;Xl??????*@??u???r??=T&???_?_??.??i?????(?$_f?zD??????ZGH??g???
g?E:_??bz^??f?~o???t?}??u=uzp\UI????Z??l[?G?3??Y?UAEfKT?f?O??N_?d__?????a_?15%?^?
'p?_?$,9"{??^??y??_?t???,?W?PCW??~??[?$??????e????f?Y-Zi__??_??w?_?&QT??`?`~?[?K_??_? ??