Halo, Habr! Saya mempersembahkan kepada Anda terjemahan 6, 7 dan 8 artikel oleh Jakob Jenkov dari serangkaian artikel untuk pemula yang ingin mempelajari dasar-dasar kriptografi di Jawa.
Daftar isi:
- Kriptografi Jawa
- Java cipher
- Pesan pesan
- Mac
- Tanda tangan
- Keypair
- Keygenerator
- KeyPairGenerator
- Keystore
- Keytool
- Sertifikat
- Pabrik Sertifikat
- CertPath
Pasangan kunci
Kelas KeyPair ( java.security.KeyPair ) adalah sepasang kunci asimetris (kunci publik + kunci pribadi). Contoh KeyPair umumnya digunakan dalam kriptografi asimetris (enkripsi data atau tanda tangan). Biasanya, turunan KeyPair diperoleh dari Java key store atau KeyPairGenerator, yang akan dibahas nanti dalam artikel ini.
Akses kunci publik
Anda dapat mengakses kunci publik dari instance KeyPair dengan memanggil metode getPublic () . Contoh memperoleh kunci publik:
PublicKey publicKey = keyPair.getPublic();
Akses Kunci Pribadi
Anda juga dapat mengakses kunci pribadi instance KeyPair dengan memanggil metode getPrivate () -nya . Berikut adalah contoh mendapatkan kunci pribadi:
PrivateKey privateKey = keyPair.getPrivate();
Generator kunci
Kelas KeyGenerator ( javax.crypto.KeyGenerator ) digunakan untuk menghasilkan kunci enkripsi simetris. Kunci enkripsi simetris adalah kunci yang digunakan untuk mengenkripsi dan mendekripsi data menggunakan algoritma enkripsi simetris.
Membuat instance KeyGenerator
Sebelum Anda dapat menggunakan kelas KeyGenerator, Anda harus membuat turunan dari KeyGenerator. Contoh KeyGenerator dibuat dengan memanggil metode statis getInstance () , sebagai parameter yang mengambil nama algoritma enkripsi yang menjadi kunci kunci tersebut dibuat. Berikut ini contoh membuat instance KeyGenerator:
KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
Contoh ini membuat turunan dari KeyGenerator yang dapat menghasilkan kunci untuk algoritma enkripsi AES.
Inisialisasi KeyGenerator
Setelah membuat instance KeyGenerator, Anda harus menginisialisasi itu. Inisialisasi instance dapat dilakukan dengan memanggil metode init () . Contoh inisialisasi instance KeyGenerator:
SecureRandom secureRandom = new SecureRandom(); int keyBitSize = 256; keyGenerator.init(keyBitSize, secureRandom);
Metode init () menerima dua parameter: panjang kunci dan SecureRandom , yang digunakan selama pembuatan kunci.
Generasi kunci
Setelah menginisialisasi instance KeyGenerator, Anda dapat menggunakannya untuk membuat kunci. Pembuatan kunci dilakukan dengan memanggil metode generateKey () . Berikut adalah contoh menghasilkan kunci simetris:
SecretKey secretKey = keyGenerator.generateKey();
Generator pasangan kunci
Kelas KeyPairGenerator ( java.security.KeyPairGenerator ) digunakan untuk menghasilkan pasangan kunci asimetris. Sepasang kunci asimetris terdiri dari dua kunci: kunci pertama biasanya digunakan untuk mengenkripsi data, dan kunci kedua digunakan untuk mendekripsi data yang dienkripsi dengan kunci pertama.
Kunci publik dan pribadi
Jenis yang paling terkenal dari pasangan kunci asimetris adalah jenis pasangan kunci dari bentuk: kunci publik + kunci pribadi. Kunci pribadi digunakan untuk mengenkripsi data, dan kunci publik digunakan untuk mendekripsi data. Bahkan, Anda juga dapat mengenkripsi data menggunakan kunci publik dan mendekripsi menggunakan kunci pribadi. Kunci pribadi biasanya dirahasiakan, dan kunci publik dapat diketahui semua orang. Jadi, jika Jack mengenkripsi beberapa data dengan kunci pribadinya, siapa pun yang memiliki kunci publik Jack dapat mendekripsi itu.
Membuat instance KeyPairGenerator
Untuk menggunakan KeyPairGenerator, Anda harus terlebih dahulu membuat turunan dari kelas KeyPairGenerator. Sebuah instance dari KeyPairGenerator dibuat dengan memanggil metode getInstance () . Berikut ini contoh membuat instance:
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
Metode getInstance () menerima nama algoritma enkripsi yang akan digunakan. Dalam contoh ini, kami menggunakan algoritma RSA.
Inisialisasi KeyPairGenerator
Bergantung pada algoritme, Anda mungkin perlu menginisialisasi turunan KeyPairGenerator. KeyPairGenerator diinisialisasi dengan memanggil metode initialize () -nya. Contoh inisialisasi contoh KeyPairGenerator:
keyPairGenerator.initialize(2048);
Dalam contoh ini, KeyPairGenerator diinisialisasi untuk menghasilkan kunci 2048-bit.
Generasi pasangan kunci
Untuk menghasilkan pasangan kunci menggunakan KeyPairGenerator, metode generateKeyPair () dipanggil. Berikut adalah contoh pembuatan pasangan kunci:
KeyPair keyPair = keyPairGenerator.generateKeyPair();