Kriptografi Java - Memverifikasi Tanda Tangan

Anda dapat membuat tanda tangan digital menggunakan Java dan memverifikasinya dengan mengikuti langkah-langkah yang diberikan di bawah ini.

Langkah 1: Buat objek KeyPairGenerator

Itu KeyPairGenerator kelas menyediakan getInstance() metode yang menerima variabel String yang mewakili algoritme penghasil kunci yang diperlukan dan mengembalikan objek KeyPairGenerator yang menghasilkan kunci.

Membuat KeyPairGenerator objek menggunakan getInstance() metode seperti yang ditunjukkan di bawah ini.

//Creating KeyPair generator object
KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("DSA");

Langkah 2: Inisialisasi objek KeyPairGenerator

Itu KeyPairGenerator kelas menyediakan metode bernama initialize()metode. Metode ini digunakan untuk menginisialisasi generator pasangan kunci. Metode ini menerima nilai integer yang mewakili ukuran kunci.

Inisialisasi objek KeyPairGenerator yang dibuat pada langkah sebelumnya menggunakan initialize() metode seperti yang ditunjukkan di bawah ini.

//Initializing the KeyPairGenerator
keyPairGen.initialize(2048);

Langkah 3: Buat KeyPairGenerator

Anda dapat menghasilkan KeyPair menggunakan generateKeyPair()metode. Hasilkan keypair menggunakan metode ini seperti yang ditunjukkan di bawah ini.

//Generate the pair of keys
KeyPair pair = keyPairGen.generateKeyPair();

Langkah 4: Dapatkan kunci pribadi dari pasangan

Anda bisa mendapatkan kunci pribadi dari objek KeyPair yang dihasilkan menggunakan getPrivate() metode.

Dapatkan kunci pribadi menggunakan getPrivate() metode seperti yang ditunjukkan di bawah ini.

//Getting the private key from the key pair
PrivateKey privKey = pair.getPrivate();

Langkah 5: Buat objek tanda tangan

Itu getInstance() metode dari Signature kelas menerima parameter string yang mewakili algoritme tanda tangan yang diperlukan dan mengembalikan objek Tanda Tangan masing-masing.

Buat objek kelas Signature menggunakan getInstance() metode.

//Creating a Signature object
Signature sign = Signature.getInstance("SHA256withDSA");

Langkah 6: Inisialisasi objek Signature

Itu initSign() metode kelas Signature menerima a PrivateKey objek dan menginisialisasi objek Signature saat ini.

Inisialisasi objek Signature yang dibuat pada langkah sebelumnya menggunakan initSign() metode seperti yang ditunjukkan di bawah ini.

//Initialize the signature
sign.initSign(privKey);

Langkah 7: Tambahkan data ke objek Signature

Itu update() metode kelas Signature menerima array byte yang mewakili data yang akan ditandatangani atau diverifikasi dan memperbarui objek saat ini dengan data yang diberikan.

Perbarui objek Signature yang diinisialisasi dengan meneruskan data yang akan ditandatangani ke update() metode dalam bentuk array byte seperti yang ditunjukkan di bawah ini.

byte[] bytes = "Hello how are you".getBytes();      

//Adding data to the signature
sign.update(bytes);

Langkah 8: Hitung Tanda Tangannya

Itu sign() metode dari Signature kelas mengembalikan byte tanda tangan dari data yang diperbarui.

Hitung Signature menggunakan metode sign () seperti yang ditunjukkan di bawah ini.

//Calculating the signature
byte[] signature = sign.sign();

Langkah 9: Inisialisasi objek tanda tangan untuk verifikasi

Untuk memverifikasi objek Signature, Anda perlu menginisialisasinya terlebih dahulu menggunakan initVerify() metode itu metode menerima a PublicKey obyek.

Oleh karena itu, inisialisasi objek Signature untuk verifikasi menggunakan initVerify() metode seperti yang ditunjukkan di bawah ini.

//Initializing the signature
sign.initVerify(pair.getPublic());

Langkah 10: Perbarui data untuk diverifikasi

Perbarui objek yang diinisialisasi (untuk verifikasi) dengan data data yang akan diverifikasi menggunakan metode pembaruan seperti yang ditunjukkan di bawah ini.

//Update the data to be verified
sign.update(bytes);

Langkah 11: Verifikasi Tanda Tangan

Itu verify()metode kelas Signature menerima objek tanda tangan lain dan memverifikasinya dengan yang sekarang. Jika kecocokan terjadi, itu mengembalikan benar jika tidak mengembalikan salah.

Verifikasi tanda tangan menggunakan metode ini seperti yang ditunjukkan di bawah ini.

//Verify the signature
boolean bool = sign.verify(signature);

Contoh

Mengikuti program Java menerima pesan dari pengguna, menghasilkan tanda tangan digital untuk pesan yang diberikan, dan memverifikasinya.

import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.Signature;

import java.util.Scanner;

public class SignatureVerification {
   public static void main(String args[]) throws Exception{
      //Creating KeyPair generator object
      KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("DSA");
	      
      //Initializing the key pair generator
      keyPairGen.initialize(2048);
	      
      //Generate the pair of keys
      KeyPair pair = keyPairGen.generateKeyPair();
      
      //Getting the privatekey from the key pair
      PrivateKey privKey = pair.getPrivate();

      //Creating a Signature object
      Signature sign = Signature.getInstance("SHA256withDSA");

      //Initializing the signature
      sign.initSign(privKey);
      byte[] bytes = "Hello how are you".getBytes();
      
      //Adding data to the signature
      sign.update(bytes);
      
      //Calculating the signature
      byte[] signature = sign.sign();      
      
      //Initializing the signature
      sign.initVerify(pair.getPublic());
      sign.update(bytes);
      
      //Verifying the signature
      boolean bool = sign.verify(signature);
      
      if(bool) {
         System.out.println("Signature verified");   
      } else {
         System.out.println("Signature failed");
      }
   }
}

Keluaran

Program di atas menghasilkan keluaran berikut -

Signature verified