Rumah >Java >javaTutorial >Java KeyStore
Keystore ialah pangkalan data dalam Java; ia membolehkan kami menyimpan data dalam format utama; Keystore dilanjutkan daripada kelas Java java.security.KeyStore, kita boleh menulis keyStore pada cakera dan membacanya dari cakera itu sendiri; faedah utama menggunakan keystore dalam Java adalah ia membolehkan kita melindungi data kerana ia mempunyai ciri menyimpan data dalam bentuk perlindungan dengan kata laluan. Kata laluan ini adalah kata laluan mereka kerana ciri penyimpanan jenis ini menjadikan yang terbaik untuk mengendalikan kes di mana kita perlu melaksanakan mekanisme penyulitan dan penyahsulitan.
Mulakan Kursus Pembangunan Perisian Percuma Anda
Pembangunan web, bahasa pengaturcaraan, ujian perisian & lain-lain
Sebelum mencipta Keystore, kita perlu memahami jenisnya; terdapat beberapa mekanisme utama yang tersedia keyStore ialah kunci awam (kunci ini biasanya mengandungi sijil berkaitan yang bersifat awam), peribadi dan awam (digunakan untuk sebarang jenis penyulitan asimetri). Kita boleh menggunakan kaedah getInstance() Java untuk mencipta Keystore dalam Java. Kaedah ini ialah kaedah terbina yang ditakrifkan dalam kelas utama dan yang kami telah melebihi. Di bawah ialah contoh mencipta jenis KeyStore lalai dalam Java. Saya mengatakannya sebagai lalai kerana kami tidak melepasi sebarang param dalam fungsi tersebut. Jika kami ingin mencipta sebarang keyStore tersuai, kami boleh memberikan hujah dalam kaedah untuk jenis Keystore yang diperlukan.
KeyStore customKeyStore = KeyStore.getInstance(custom-format);
Di sini kita boleh lulus format tersuai = PKCS12
Nota: PKCS12(Ini ialah Kunci Awam, dan ia adalah Piawaian Kriptografi) mentakrifkan format untuk menyimpan sijil untuk pelayan. Ia juga membolehkan kami menyimpan kunci peribadi kepada satu fail boleh disulitkan.Di bawah ialah contoh membuat kedai menggunakan kaedah getInstance().
Kod:
import java.io.FileInputStream; import java.security.KeyStore; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; public class KeyCreate { public static void main(String args[]) throws Exception { //Creation of Keystore KeyStore ks = KeyStore.getInstance("JCEKS"); System.out.println("Key Store Created"); } }
Output:
Di sini, pemuatan ialah mekanisme penting untuk stor kunci jika kita bercakap tentang bahagian pemuatan Keystore. Kita mesti berhati-hati semasa melakukan operasi ini, kerana ia hanya perlu dimuatkan apabila diperlukan. Memuatkan adalah penting kerana kita tidak boleh menggunakan Keystore tanpa memuatkannya. Anda juga boleh memuatkan Keystore dengan sebarang data kosong. Secara umum, kami boleh memuatkan Keystore sama ada dari mana-mana fail atau dari mana-mana storan lain. Terdapat kaedah yang dipanggil load(); kaedah ini akan melaksanakan tugas memuatkan data. Kita boleh menghantar dua atribut kepada kaedah beban; sifat-sifatnya ialah
Mari kami memahami aliran asas untuk memuatkan KeyStore.load(dataStream, kata laluan). Di sini kita boleh mengambil inputStream sebagai dataStream dan sebarang rentetan untuk kata laluan. Seperti yang telah kami nyatakan, kami juga boleh memuatkan data kosong untuk KyeStore, yang boleh kami lakukan dengan menghantar sebarang nilai nol untuk dataStream keyStore seperti KeyStore.load(null, kata laluan Keystore). Sebaik sahaja kami melepasi null sebagai aliran data, ia akan mengambil nilai null dan mencipta Keystore kosong untuk kami. Perkara penting tentang stor kunci ialah jika kita tidak memuatkan KeyStore, ia akan memberikan pengecualian untuk sebarang kaedah yang kita gunakan. Untuk amalan pengekodan yang lebih baik juga, adalah sangat penting untuk memuatkan keyStore sebelum mula menggunakannya.
Dalam contoh di bawah, kami sedang memuatkan Keystore dengan nilai nol.
Kod:
import java.io.FileInputStream; import java.security.KeyStore; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; public class KeyLoad { public static void main(String args[]) throws Exception { //Creation of Keystore KeyStore ks = KeyStore.getInstance("JCEKS"); ks.load(null); System.out.println("Loading of an empty Keystore done"); } }
Output:
Kami mempunyai banyak perbincangan tentang memuatkan dan mencipta KeyStore dalam Java; mari kita fokus pada penyimpanan. Di sini menyimpan bermaksud data yang ingin kami simpan untuk kegunaan masa hadapan, jadi penyimpanan boleh dilakukan di mana-mana, sama ada pada pangkalan data atau cakera, bergantung pada pilihan kami. Kami mempunyai kaedah yang dipanggil kedai yang akan memainkan peranan untuk menyimpan data dalam KeyStore. Kami boleh menghantar dua atribut kepada kaedah KeyStore store(). Di bawah ialah contoh sintaks mudah untuknya.
Sintaks
keyStore.store(streamOfOutputData ,password);
Di sini aliran streamOfOutputData boleh membaca data dari mana-mana laluan dan fail, dan kata laluan ialah kata laluan rentetan untuk penyulitan data kami yang disimpan. Jika kami memerlukan data yang telah kami simpan pada masa hadapan, kami boleh mendapatkannya dari tempat yang disimpan dengan memuatkannya semula.
Kod:
import java.io.FileInputStream; import java.security.KeyStore; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; public class KeyStoreExample { public static void main(String args[]) throws Exception { //Creation of Keystore KeyStore ks = KeyStore.getInstance("JCEKS"); //Loading the KeyStore object char[] ps = "ranjan".toCharArray(); String filePath = "./cacerts"; java.io.FileInputStream streamInput = new FileInputStream(filePath); ks.load(null); KeyStore.ProtectionParameter pp = new KeyStore.PasswordProtection(ps); //Here we are creating an secret object SecretKey ms = new SecretKeySpec("anypassword".getBytes(), "DSA"); //Creating SecretKeyEntry object KeyStore.SecretKeyEntry ske = new KeyStore.SecretKeyEntry(ms); ks.setEntry("secretKeyAlias", ske, pp); //Storing the object java.io.FileOutputStream storeData = null; storeData = new java.io.FileOutputStream("nameOfNewKey"); ks.store(storeData, ps); System.out.println("data stored"); } }
Output:
We can use two methods called getKey and setKey to get and set the keys. These methods are part of the KeyStore in Java. The method getEntry will allow us to get the value stored. Note that we have stored the value on the key with a password, so we need to pass the alias name of the key and the password used for storing the key. Similarly, we have a method called setKeyEntry.After getting the value from the keyStore again, we can access the data with various available methods like getPrivateKey(),getcertificate(),getPrivateKey(), and getCertificateChain(). These methods can be used to get the data according to our requirements from the KeyStore.
In the example below, we check if the key is available from any KeyStore.
Code:
import java.security.*; import java.security.cert.*; import java.util.*; import java.io.*; public class SetAndGetKey { public static void main(String[] argv) { try { KeyStore store = KeyStore.getInstance("JCEKS"); store.load(null); Boolean status = store.isKeyEntry("test"); if (status) System.out.println("The key available"); else System.out.println("The key is not available"); } catch (NoSuchAlgorithmException e) { //catch code to handle exception } catch (NullPointerException e) { //catch code to handle exception } catch (KeyStoreException e) { //catch code to handle exception } catch (FileNotFoundException e) { //catch code to handle exception } catch (IOException e) { //catch code to handle exception } catch (CertificateException e) { //catch code to handle exception } } }
Output:
To perform various operations on the KeyStore, we have various methods below.
From this tutorial, we learned the basic concept of KeyStore in Java and about the creation, loading, and getting of various types of data from the Keystore data; we learned about the various available methods and their uses in Java for KeyStore.
Atas ialah kandungan terperinci Java KeyStore. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!