cari

Java KeyStore

Aug 30, 2024 pm 03:39 PM
java

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:

Java KeyStore

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:

Java KeyStore

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:

Java KeyStore

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

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!

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Mengapa Java adalah pilihan yang popular untuk membangunkan aplikasi desktop silang platform?Mengapa Java adalah pilihan yang popular untuk membangunkan aplikasi desktop silang platform?Apr 25, 2025 am 12:23 AM

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

Bincangkan situasi di mana menulis kod khusus platform di Java mungkin diperlukan.Bincangkan situasi di mana menulis kod khusus platform di Java mungkin diperlukan.Apr 25, 2025 am 12:22 AM

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.

Apakah trend masa depan dalam pembangunan Java yang berkaitan dengan kemerdekaan platform?Apakah trend masa depan dalam pembangunan Java yang berkaitan dengan kemerdekaan platform?Apr 25, 2025 am 12:12 AM

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.

Bagaimanakah menaip Java yang kuat menyumbang kepada kemerdekaan platform?Bagaimanakah menaip Java yang kuat menyumbang kepada kemerdekaan platform?Apr 25, 2025 am 12:11 AM

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.

Terangkan bagaimana antara muka asli Java (JNI) boleh menjejaskan kebebasan platform.Terangkan bagaimana antara muka asli Java (JNI) boleh menjejaskan kebebasan platform.Apr 25, 2025 am 12:07 AM

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.

Adakah terdapat teknologi baru yang mengancam atau meningkatkan kemerdekaan platform Java?Adakah terdapat teknologi baru yang mengancam atau meningkatkan kemerdekaan platform Java?Apr 24, 2025 am 12:11 AM

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.

Apakah pelaksanaan JVM yang berbeza, dan adakah mereka semua menyediakan tahap kemerdekaan platform yang sama?Apakah pelaksanaan JVM yang berbeza, dan adakah mereka semua menyediakan tahap kemerdekaan platform yang sama?Apr 24, 2025 am 12:10 AM

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.

Bagaimanakah kebebasan platform mengurangkan kos pembangunan dan masa?Bagaimanakah kebebasan platform mengurangkan kos pembangunan dan masa?Apr 24, 2025 am 12:08 AM

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.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

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

Alat panas

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.

DVWA

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

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

VSCode Windows 64-bit Muat Turun

VSCode Windows 64-bit Muat Turun

Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft