Halo, Habr! Saya sajikan kepada Anda terjemahan artikel kelima "Java Signature" oleh Jakob Jenkov dari serangkaian artikel untuk pemula yang ingin mempelajari dasar-dasar kriptografi di Jawa.
Daftar isi:
- Kriptografi Jawa
- Java cipher
- Pesan pesan
- Mac
- Tanda tangan
- Keypair
- Keygenerator
- KeyPairGenerator
- Keystore
- Keytool
- Sertifikat
- Pabrik Sertifikat
- CertPath
Java Signature
Kelas tanda tangan ( java.security.Signature ) membuat tanda tangan digital untuk data biner. Tanda tangan digital adalah intisari pesan yang dienkripsi dengan kunci privat dari pasangan kunci privat / publik. Siapa pun yang memiliki kunci publik dapat memverifikasi tanda tangan digital.
Buat instance tanda tangan
Sebelum Anda dapat menggunakan kelas Signature, Anda harus membuat instance kelas ini dengan memanggil metode statis getInstance () . Di bawah ini adalah contoh di mana instance Signature dibuat:
Signature signature = Signature.getInstance("SHA256WithDSA");
Parameter string yang diteruskan ke metode getInstance () menentukan algoritma enkripsi tanda tangan digital yang digunakan.
Inisialisasi Instance Signature
Setelah membuat instance Signature, Anda perlu menginisialisasi sebelum mulai menggunakannya. Contoh Signature diinisialisasi dengan memanggil metode init () -nya. Contoh menginisialisasi instance Java signature:
SecureRandom secureRandom = new SecureRandom(); KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("DSA"); KeyPair keyPair = keyPairGenerator.generateKeyPair(); signature.initSign(keyPair.getPrivate(), secureRandom);
Seperti yang Anda lihat, instance Signature diinisialisasi dengan kunci pribadi dari pasangan kunci publik / rahasia dan instance SecureRandom.
Pembuatan Tanda Tangan Digital
Ketika instance Signature diinisialisasi, Anda dapat menggunakannya untuk membuat tanda tangan digital. Tanda tangan digital dibuat dengan memanggil metode pembaruan () (satu kali atau lebih) dan diakhiri dengan panggilan untuk menandatangani () . Contoh membuat tanda tangan digital untuk data biner:
byte[] data = "abcdefghijklmnopqrstuvxyz".getBytes("UTF-8"); signature.update(data); byte[] digitalSignature = signature.sign();
Verifikasi Tanda Tangan Digital
Jika Anda ingin memverifikasi tanda tangan digital yang dibuat oleh orang lain, Anda harus menginisialisasi instance tanda tangan dalam mode verifikasi (alih-alih mode tanda tangan). Ini adalah bagaimana menginisialisasi instance Signature dalam mode validasi terlihat seperti:
Signature signature = Signature.getInstance("SHA256WithDSA"); signature.initVerify(keyPair.getPublic());
Perhatikan bahwa instance Signature sekarang diinisialisasi dalam mode verifikasi, meneruskan kunci publik dari pasangan kunci sebagai parameter. Setelah inisialisasi dalam mode verifikasi, Anda dapat menggunakan contoh Signature untuk memverifikasi tanda tangan digital:
byte[] data2 = "abcdefghijklmnopqrstuvxyz".getBytes("UTF-8"); signature2.update(data2); boolean verified = signature2.verify(digitalSignature);