Rumah > Java > javaTutorial > teks badan

Java KeyStore

王林
Lepaskan: 2024-08-30 15:39:24
asal
567 orang telah melayarinya

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);
Salin selepas log masuk

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");
}
}
Salin selepas log masuk

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");
}
}
Salin selepas log masuk

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);
Salin selepas log masuk

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");
}
}
Salin selepas log masuk

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
}
}
}
Salin selepas log masuk

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!

Label berkaitan:
sumber:php
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!