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
Bagaimana untuk Membuat Kedai Kunci dalam Java?
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.Contoh
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:
Bagaimana untuk Memuatkan KeyStore dalam Java?
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
- InputStream: Ini ialah aliran input dari mana data akan dibaca; strim boleh datang daripada mana-mana fail atau sumber lain.
- Char []: Bahagian ini adalah untuk keselamatan; di sini, kita boleh menghantar rentetan untuk kata laluan KeyStore untuk penyulitan.
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.
Contoh
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:
Bagaimana untuk Menyimpan KeyStore dalam Java?
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.
Contoh
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:
How to Get and Set Keys?
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.
Example
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:
Java KeyStore Methods
To perform various operations on the KeyStore, we have various methods below.
- load(inputStream, password): It will load the keyStore data, and it needs two parameters, one as the input stream(file or any disk data) and password of string
- store(outputStream, password): This method will be used for storing the data, and it will take two params one is output stream which from where data is going to read it could be file or disk and the second parameter is the password which will encrypt the data which we are storing.
- getInstance(): This method is used to create a keyStore; if we pass nothing to this method, then it will create a default keyStore else, we can pass PKCS12 as the keyStore type.
- getPrivateKey(): After getting keyStore, we can fetch private keys with this method.
- getCertificate(): We can use this method to get the certificates.
- getCertificateChain(): If we want to get a chain of certificates, we can use this method.
Conclusion
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!

Javaispopularforcross-platformdesktopapplicationsduetoits "writeOnce, runanywhere" falsafah.1) itusesBytecodethatrunsonanyjvm-equippedplatform.2) LibrariesLikeswingandjavafxhelpcreatenativeS.3) ITseShipBareSivaryS

Alasan untuk menulis kod khusus platform di Java termasuk akses kepada ciri sistem operasi tertentu, berinteraksi dengan perkakasan tertentu, dan mengoptimumkan prestasi. 1) Gunakan JNA atau JNI untuk mengakses Windows Registry; 2) Berinteraksi dengan pemandu perkakasan khusus Linux melalui JNI; 3) Gunakan logam untuk mengoptimumkan prestasi permainan pada macOS melalui JNI. Walau bagaimanapun, menulis kod khusus platform boleh menjejaskan mudah alih kod, meningkatkan kerumitan, dan berpotensi menimbulkan risiko overhead dan keselamatan.

Java akan meningkatkan lagi kemerdekaan platform melalui aplikasi awan asli, penempatan pelbagai platform dan interoperabilitas silang bahasa. 1) Aplikasi asli awan akan menggunakan GraalVM dan Quarkus untuk meningkatkan kelajuan permulaan. 2) Java akan diperluaskan ke peranti tertanam, peranti mudah alih dan komputer kuantum. 3) Melalui Graalvm, Java akan mengintegrasikan dengan lancar dengan bahasa seperti Python dan JavaScript untuk meningkatkan interoperabilitas silang bahasa.

Sistem taip kuat Java memastikan kemerdekaan platform melalui keselamatan jenis, penukaran jenis bersatu dan polimorfisme. 1) Jenis Keselamatan Melakukan pemeriksaan jenis pada masa penyusunan untuk mengelakkan kesilapan runtime; 2) peraturan penukaran jenis bersatu adalah konsisten di semua platform; 3) Polimorfisme dan mekanisme antara muka membuat kod berkelakuan secara konsisten pada platform yang berbeza.

JNI akan memusnahkan kemerdekaan platform Java. 1) JNI memerlukan perpustakaan tempatan untuk platform tertentu, 2) Kod tempatan perlu disusun dan dihubungkan pada platform sasaran, 3) versi sistem operasi atau JVM yang berbeza mungkin memerlukan versi perpustakaan tempatan yang berbeza, 4) Kod tempatan boleh memperkenalkan kelemahan keselamatan atau menyebabkan kemalangan program.

Teknologi yang muncul menimbulkan ancaman dan meningkatkan kemerdekaan platform Java. 1) Teknologi pengkomputeran awan dan kontena seperti Docker meningkatkan kemerdekaan platform Java, tetapi perlu dioptimumkan untuk menyesuaikan diri dengan persekitaran awan yang berbeza. 2) WebAssembly menyusun kod Java melalui GraalVM, memperluaskan kemerdekaan platformnya, tetapi ia perlu bersaing dengan bahasa lain untuk prestasi.

Pelaksanaan JVM yang berbeza dapat memberikan kemerdekaan platform, tetapi prestasi mereka sedikit berbeza. 1. OracleHotspot dan OpenJDKJVM melakukan sama seperti kemerdekaan platform, tetapi OpenJDK mungkin memerlukan konfigurasi tambahan. 2. IBMJ9JVM melakukan pengoptimuman pada sistem operasi tertentu. 3. Graalvm menyokong pelbagai bahasa dan memerlukan konfigurasi tambahan. 4. AzulzingJVM memerlukan pelarasan platform tertentu.

Kemerdekaan platform mengurangkan kos pembangunan dan memendekkan masa pembangunan dengan menjalankan set kod yang sama pada pelbagai sistem operasi. Khususnya, ia ditunjukkan sebagai: 1. Mengurangkan masa pembangunan, hanya satu set kod yang diperlukan; 2. Mengurangkan kos penyelenggaraan dan menyatukan proses ujian; 3. Penyebaran cepat dan kerjasama pasukan untuk memudahkan proses penempatan.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Penyesuai Pelayan SAP NetWeaver untuk Eclipse
Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.

DVWA
Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft
