Kriptografi di Jawa. Kelas KeyPair

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:


  1. Kriptografi Jawa
  2. Java cipher
  3. Pesan pesan
  4. Mac
  5. Tanda tangan
  6. Keypair
  7. Keygenerator
  8. KeyPairGenerator
  9. Keystore
  10. Keytool
  11. Sertifikat
  12. Pabrik Sertifikat
  13. 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(); 

Source: https://habr.com/ru/post/id445560/


All Articles