Verifikasi Tanda Tangan Java – Verifikasi Tanda Tangan Digital di Java
Pendahuluan
Apakah Anda pernah menerima dokumen yang ditandatangani secara digital dan bertanya-tanya, “Apakah ini benar‑benar dari orang yang diklaim?” Anda tidak sendirian. Dengan meningkatnya penipuan digital, java signature verification telah menjadi penting untuk setiap aplikasi yang menangani dokumen sensitif—baik Anda membangun sistem manajemen kontrak, memproses perjanjian keuangan, atau memvalidasi catatan pemerintah.
Berikut tantangannya: verifikasi tanda tangan bawaan Java dapat menjadi kompleks dan terbatas. Di sinilah GroupDocs.Signature for Java hadir. Ia menyederhanakan seluruh proses sekaligus memberi Anda opsi kuat seperti verifikasi berbasis tanggal dan aturan validasi khusus.
Dalam panduan ini, Anda akan belajar tepatnya cara:
- Menyiapkan dan mengkonfigurasi GroupDocs.Signature dalam proyek Java Anda
- Memverifikasi tanda tangan digital dengan opsi dan parameter khusus
- Menangani verifikasi berbasis tanggal untuk dokumen sensitif waktu
- Menghindari jebakan umum yang dapat mengancam keamanan
- Menerapkan validasi tanda tangan siap produksi
Mari kita mulai dengan apa yang Anda perlukan untuk memulai.
Jawaban Cepat
- Apa cara termudah untuk memverifikasi tanda tangan PDF di Java? Gunakan
Signature.verify()dengan objekVerificationOptionsdari GroupDocs.Signature. - Apakah saya memerlukan lisensi untuk produksi? Ya—GroupDocs.Signature memerlukan lisensi komersial atau sementara untuk penggunaan produksi.
- Bisakah saya memverifikasi tanda tangan yang lebih lama dari tanggal kedaluwarsa sertifikat? Ya—tetapkan tanggal verifikasi dengan
VerificationOptions.setVerificationTime(). - Berapa banyak format dokumen yang didukung? Lebih dari 30 format, termasuk PDF, DOCX, XLSX, PPTX, dan PNG.
- Versi Java apa yang direkomendasikan? Java 11+ untuk keamanan dan kinerja terbaik.
Apa itu verifikasi tanda tangan Java?
java signature verification adalah proses secara programatis mengonfirmasi bahwa tanda tangan digital yang tertanam dalam dokumen adalah autentik, tidak diubah, dan dibuat oleh penandatangan yang tepercaya. Ini melibatkan pemeriksaan kriptografi, validasi rantai sertifikat, dan validasi berbasis waktu opsional. Langkah verifikasi ini memastikan identitas penandatangan dan menjamin bahwa dokumen tidak diubah sejak ditandatangani.
Mengapa Verifikasi Tanda Tangan Digital Penting
Sebelum kita masuk ke kode, mari bicarakan mengapa hal ini penting. Tanda tangan digital melakukan tiga hal kritis: mengonfirmasi keaslian, menjamin integritas, dan menyediakan non‑repudiation. Dalam istilah praktis, ini berarti Anda dapat mempercayai bahwa faktur benar‑benar berasal dari vendor Anda, bahwa kontrak tidak diubah, dan bahwa perjanjian yang ditandatangani sah secara hukum. Industri seperti perawatan kesehatan (kepatuhan HIPAA), keuangan (persyaratan SOX), dan kontrak pemerintah bergantung pada ini setiap hari.
Prasyarat
Sebelum kita mulai, pastikan Anda memiliki:
- Java Development Kit (JDK): Versi 8 atau lebih tinggi (Java 11+ direkomendasikan untuk fitur keamanan yang lebih baik)
- IDE: IntelliJ IDEA, Eclipse, atau VS Code dengan ekstensi Java
- Build Tool: Maven atau Gradle untuk manajemen dependensi
- Basic Java knowledge: Pemahaman tentang kelas, objek, dan I/O file
Anda tidak perlu menjadi ahli kriptografi (syukurlah!), tetapi pemahaman dasar tentang tanda tangan digital membantu. Jika Anda baru dengan konsep ini, anggaplah seperti segel lilin pada amplop—itu membuktikan siapa yang mengirimnya dan apakah ada yang membuka.
Menyiapkan GroupDocs.Signature untuk Java
Mari integrasikan GroupDocs.Signature ke dalam proyek Anda. Penyiapannya sederhana, terlepas dari apakah Anda menggunakan Maven atau Gradle.
Pengaturan Maven
Tambahkan dependensi ini ke file pom.xml Anda:
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-signature</artifactId>
<version>23.12</version>
</dependency>
Pengaturan Gradle
Untuk pengguna Gradle, sertakan ini dalam file build.gradle Anda:
implementation 'com.groupdocs:groupdocs-signature:23.12'
Pro Tip: Selalu periksa halaman rilis GroupDocs untuk versi terbaru. Versi yang lebih baru sering menyertakan perbaikan keamanan dan peningkatan kinerja.
Mendapatkan Lisensi Anda
GroupDocs.Signature memerlukan lisensi untuk penggunaan produksi. Berikut pilihan Anda:
- Free Trial: Bagus untuk pengujian dan pengembangan (Dapatkan di sini)
- Temporary License: Fitur lengkap selama 30 hari (Minta di sini)
- Commercial License: Untuk penerapan produksi (Beli di sini)
Versi percobaan gratis memiliki beberapa batasan (seperti watermark), tetapi sangat cocok untuk belajar dan membuat prototipe.
Inisialisasi Dasar
Setelah dependensi selesai, berikut cara menginisialisasi pustaka:
Kelas Signature adalah titik masuk utama yang memuat dokumen dan menyediakan metode penandatanganan serta verifikasi.
import com.groupdocs.signature.Signature;
String filePath = "YOUR_DOCUMENT_DIRECTORY/sample_signed_document.pdf";
Signature signature = new Signature(filePath);
Memverifikasi Tanda Tangan Digital: Dasar-dasarnya
Sekarang bagian yang menyenangkan. Mari verifikasi dokumen yang ditandatangani secara digital langkah demi langkah.
Apa langkah pertama dalam verifikasi tanda tangan java?
Muat dokumen dengan instance Signature dan panggil verify() menggunakan objek VerificationOptions yang dikonfigurasi dengan benar. Panggilan tunggal ini melakukan validasi kriptografi, pemeriksaan integritas, dan verifikasi rantai sertifikat. Ini memastikan keaslian dokumen dan bahwa sertifikat penandatangan dipercaya pada saat verifikasi.
Langkah 1: Impor Paket yang Diperlukan
Mulailah dengan mengimpor apa yang Anda butuhkan:
Impor berikut membawa kelas inti yang diperlukan untuk memuat dokumen, mengkonfigurasi verifikasi, dan menangani hasil.
import com.groupdocs.signature.Signature;
import com.groupdocs.signature.domain.VerificationResult;
import com.groupdocs.signature.options.verify.DigitalVerifyOptions;
Langkah 2: Konfigurasikan Opsi Verifikasi
Inilah bagian yang menarik. Anda dapat menyesuaikan proses verifikasi dengan parameter tertentu. Misalnya, tambahkan komentar untuk melacak mengapa kami memverifikasi dokumen ini:
VerificationOptions mendefinisikan kriteria dan pengaturan yang digunakan selama proses verifikasi, seperti tanda tangan mana yang diperiksa dan aturan validasi khusus apa pun.
DigitalVerifyOptions options = new DigitalVerifyOptions();
options.setComments("Approved"); // Tracks verification context
Mengapa menambahkan komentar? Sangat berguna untuk jejak audit. Ketika Anda meninjau log enam bulan kemudian, Anda akan tahu persis mengapa dokumen diverifikasi dan dengan kriteria apa.
Langkah 3: Lakukan Verifikasi
Sekarang jalankan verifikasi:
VerificationResult berisi hasil operasi verifikasi, menunjukkan keberhasilan atau kegagalan serta memberikan informasi terperinci tentang masalah yang ditemui.
VerificationResult result = signature.verify(options);
if (result.isValid()) {
System.out.println("The document was verified successfully.");
} else {
System.out.println("The document failed the verification process.");
}
VerificationResult adalah objek ringkas yang memberi tahu Anda apakah tanda tangan lulus semua pemeriksaan dan memberikan alasan kegagalan secara detail bila tidak. Pustaka memeriksa:
- Apakah tanda tangan valid secara kriptografi?
- Apakah dokumen telah diubah sejak penandatanganan?
- Apakah rantai sertifikat divalidasi dengan benar?
Jika semua pemeriksaan lulus, Anda mendapatkan true. Jika ada yang gagal, Anda mendapatkan false—dan harus memperlakukan dokumen tersebut sebagai mencurigakan.
Menangani Verifikasi Berbasis Tanggal
Terkadang Anda perlu memverifikasi bahwa tanda tangan valid pada titik waktu tertentu. Ini penting untuk dokumen hukum di mana Anda harus membuktikan “ini valid pada 15 Oktober 2024, meskipun sertifikatnya kedaluwarsa kemudian.”
Mengapa Penanganan Tanggal Penting
Bayangkan skenario ini: Sebuah kontrak ditandatangani pada 1 Juni dengan sertifikat yang kedaluwarsa pada 1 Juli. Anda memverifikasinya pada 1 Agustus. Tanpa penanganan tanggal, verifikasi gagal karena sertifikat sudah kedaluwarsa. Namun dengan verifikasi berbasis tanggal, Anda dapat mengonfirmasi bahwa itu valid saat ditandatangani—yang secara hukum penting.
Menetapkan Tanggal Verifikasi
VerificationOptions.setVerificationTime() memungkinkan Anda menentukan momen waktu tepat yang akan digunakan untuk mengevaluasi validitas sertifikat.
import java.util.Date;
import java.text.SimpleDateFormat;
// Verify as if it's a specific date
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date verificationDate = dateFormat.parse("2024-06-15");
options.setVerificationDate(verificationDate);
Melakukan Verifikasi Berbasis Tanggal
Sekarang jalankan verifikasi dengan parameter tanggal Anda:
Pemanggilan verify() menggunakan waktu verifikasi yang telah ditetapkan sebelumnya untuk menilai tanda tangan seolah‑olah diperiksa pada momen historis itu.
VerificationResult result = signature.verify(options);
if (result.isValid()) {
System.out.println("The document was verified successfully for the specified date.");
} else {
System.out.println("The document failed verification for that date.");
}
Kasus penggunaan dunia nyata: Lembaga keuangan menggunakan ini saat mengaudit transaksi historis. Mereka perlu memastikan tanda tangan valid pada saat penandatanganan, bukan hanya saat ini.
Kesalahan Umum Saat Memverifikasi Tanda Tangan
Izinkan saya menghemat Anda dari beberapa masalah. Berikut kesalahan yang sering saya lihat developer lakukan (dan yang pernah saya lakukan saat belajar ini):
1. Lupa Memeriksa Periode Validitas Sertifikat
Kesalahan: Menganggap tanda tangan tidak valid hanya karena sertifikat kedaluwarsa.
Solusi: Selalu gunakan verifikasi berbasis tanggal untuk dokumen historis. Periksa kapan dokumen ditandatangani, bukan hanya apakah sertifikat valid hari ini.
2. Tidak Menangani Masalah Jalur File
Kesalahan: Menulis jalur file secara keras yang rusak di lingkungan berbeda.
Solusi:
Gunakan Paths.get() untuk membangun jalur yang independen platform dan menghindari pemisah yang di‑escape.
// Don't do this:
String filePath = "C:\\Users\\John\\Documents\\contract.pdf";
// Do this instead:
String filePath = System.getProperty("user.dir") + "/documents/contract.pdf";
// Or use proper configuration files
3. Mengabaikan Detail Hasil Verifikasi
Kesalahan: Hanya memeriksa isValid() tanpa menelusuri mengapa verifikasi gagal.
Solusi:
Log result.getErrorMessage() dan result.getErrorCode() untuk mendapatkan alasan kegagalan secara detail.
VerificationResult result = signature.verify(options);
if (!result.isValid()) {
// Get detailed failure information
System.out.println("Verification failed. Details:");
result.getFailed().forEach(signatureResult -> {
System.out.println("Error: " + signatureResult.getMessage());
});
}
4. Menggunakan Penyimpanan Sertifikat yang Salah
Kesalahan: Tidak mengkonfigurasi otoritas sertifikat yang tepat untuk validasi.
Solusi: Pastikan keystore Java Anda menyertakan sertifikat root untuk otoritas penandatangan Anda. Ini sangat penting di lingkungan perusahaan dengan CA internal.
Praktik Terbaik Keamanan
Verifikasi hanya seaman implementasinya. Ikuti praktik berikut untuk menghindari kerentanan:
1. Selalu Verifikasi Sebelum Mempercayai
Jangan pernah menganggap dokumen aman. Jadikan verifikasi langkah wajib sebelum memproses dokumen apa pun yang ditandatangani:
Signature.verify() mengembalikan boolean yang menunjukkan validitas keseluruhan tanda tangan dokumen.
public boolean processDocument(String filePath) {
Signature signature = new Signature(filePath);
DigitalVerifyOptions options = new DigitalVerifyOptions();
// Mandatory verification check
if (!signature.verify(options).isValid()) {
throw new SecurityException("Document failed signature verification");
}
// Only proceed if verification passed
return processVerifiedDocument(filePath);
}
2. Perbarui Pustaka Secara Berkala
Kerentanan keamanan diperbaiki secara rutin. Langganan pengumuman keamanan GroupDocs dan perbarui segera saat versi baru dirilis.
3. Gunakan Penyimpanan File yang Aman
Jangan menyimpan dokumen yang telah diverifikasi di direktori yang dapat diakses publik. Terapkan kontrol akses yang tepat:
- Batasi izin file hanya untuk pengguna yang diperlukan
- Gunakan penyimpanan terenkripsi untuk dokumen sensitif
- Terapkan pencatatan audit untuk semua akses dokumen
4. Validasi Rantai Sertifikat
VerificationOptions dapat dikonfigurasi untuk menegakkan validasi rantai penuh hingga otoritas root yang tepercaya.
options.setVerifyCertificateChain(true); // Ensures full chain validation
5. Tetapkan Batas Waktu yang Tepat
Di produksi, tambahkan batas waktu untuk mencegah serangan DoS:
VerificationOptions.setTimeout(30_000) menetapkan batas 30 detik untuk operasi verifikasi.
// Prevent hanging on corrupted or malicious files
signature.setTimeoutMilliseconds(5000); // 5-second timeout
Kapan Menggunakan GroupDocs vs. Solusi Java Bawaan
Anda mungkin bertanya: “Java memiliki verifikasi tanda tangan bawaan. Mengapa harus menggunakan GroupDocs?”
Gunakan API Bawaan Java Ketika:
- Anda hanya membutuhkan verifikasi tanda tangan dasar
- Anda bekerja secara eksklusif dengan format tertentu (seperti penandatanganan JAR)
- Anda menginginkan nol dependensi eksternal
- Anda memiliki keahlian kriptografi di dalam tim
Gunakan GroupDocs.Signature Ketika:
- Anda perlu memverifikasi banyak format dokumen (PDF, DOCX, XLSX, dll.)
- Anda menginginkan API tingkat tinggi yang disederhanakan
- Anda memerlukan fitur lanjutan seperti verifikasi berbasis tanggal
- Anda bekerja dengan QR code, barcode, atau tanda tangan metadata
- Kecepatan pengembangan lebih penting daripada jumlah dependensi
Intinya: GroupDocs.Signature seperti memiliki spesialis verifikasi tanda tangan dalam tim Anda. Anda bisa membangunnya sendiri dengan API tingkat rendah, tetapi mengapa menghabiskan minggu ketika Anda dapat mengimplementasikannya dalam hitungan hari?
Memecahkan Masalah Umum
Menghadapi masalah? Berikut solusi untuk masalah paling umum:
Masalah: Pengecualian “File not found”
Gejala: FileNotFoundException meskipun file ada.
Solusi:
- Periksa format jalur file (gunakan garis miring maju atau backslash yang di‑escape)
- Verifikasi izin file—apakah aplikasi Anda dapat membaca file?
- Gunakan jalur absolut selama debugging untuk menghilangkan masalah jalur
Path.of() membuat objek jalur yang independen platform, mengurangi kesalahan terkait jalur.
// Debug file path issues
File file = new File(filePath);
System.out.println("File exists: " + file.exists());
System.out.println("Can read: " + file.canRead());
System.out.println("Absolute path: " + file.getAbsolutePath());
Masalah: Verifikasi Gagal pada Tanda Tangan yang Valid
Gejala: Anda tahu tanda tangan valid, tetapi verifikasi mengembalikan false.
Solusi:
- Periksa apakah sertifikat telah kedaluwarsa (gunakan verifikasi berbasis tanggal untuk dokumen historis)
- Pastikan keystore Java Anda menyertakan root CA sertifikat penandatangan
- Verifikasi bahwa dokumen tidak diubah setelah penandatanganan (bahkan perubahan kecil dapat merusak tanda tangan)
- Periksa apakah tanda tangan menggunakan algoritma yang didukung oleh versi Java Anda
Masalah: Kesalahan Out of Memory dengan File Besar
Gejala: OutOfMemoryError saat memverifikasi PDF besar atau batch dokumen.
Solusi:
- Tingkatkan ukuran heap JVM:
-Xmx2g(sesuaikan kebutuhan) - Proses file secara individual daripada memuat semua sekaligus
- Gunakan verifikasi streaming untuk file yang sangat besar
Signature.verifyStream() memproses dokumen dalam potongan untuk menjaga penggunaan memori tetap rendah.
// Proper resource management
try (Signature signature = new Signature(filePath)) {
VerificationResult result = signature.verify(options);
// Process result
} // Automatically closes and releases resources
Masalah: Performa Verifikasi Lambat
Gejala: Verifikasi memakan beberapa detik per dokumen.
Solusi:
- Cache hasil validasi sertifikat saat memverifikasi banyak dokumen dari penandatangan yang sama
- Gunakan pemrosesan paralel untuk verifikasi batch
- Nonaktifkan opsi verifikasi yang tidak diperlukan
- Periksa latensi jaringan jika memverifikasi terhadap penyimpanan sertifikat remote
Tips Lanjutan untuk Lingkungan Produksi
Siap menerapkannya di produksi? Berikut beberapa tips tingkat pro:
1. Terapkan Pencatatan Komprehensif
Jangan hanya mencatat keberhasilan atau kegagalan—catat semua yang berguna untuk debugging:
logger.info("Verification result: {}", result) merekam objek hasil lengkap untuk analisis selanjutnya.
import java.util.logging.Logger;
Logger logger = Logger.getLogger(YourClass.class.getName());
VerificationResult result = signature.verify(options);
logger.info(String.format(
"Verification for %s: %s (Processed in %dms)",
filePath,
result.isValid() ? "PASSED" : "FAILED",
result.getProcessingTime()
));
if (!result.isValid()) {
result.getFailed().forEach(failure ->
logger.warning("Verification failure: " + failure.getMessage())
);
}
2. Gunakan Verifikasi Asinkron untuk Throughput Lebih Baik
Saat memproses banyak dokumen, gunakan pemrosesan async:
CompletableFuture.runAsync(() -> signature.verify(options)) menjalankan verifikasi di pool thread terpisah.
import java.util.concurrent.CompletableFuture;
public CompletableFuture<VerificationResult> verifyAsync(String filePath) {
return CompletableFuture.supplyAsync(() -> {
try (Signature signature = new Signature(filePath)) {
return signature.verify(options);
}
});
}
3. Terapkan Circuit Breaker untuk Dependensi Eksternal
Jika verifikasi bergantung pada layanan validasi sertifikat eksternal, gunakan circuit breaker untuk menangani gangguan dengan elegan.
4. Cache Hasil Verifikasi (Dengan Hati-hati)
Untuk dokumen yang tidak berubah, cache hasil verifikasi—tetapi terapkan invalidasi cache yang tepat:
Cache.put(docId, result, Duration.ofHours(24)) menyimpan hasil selama satu hari.
// Pseudocode for caching strategy
String cacheKey = filePath + "_" + fileChecksum;
if (verificationCache.containsKey(cacheKey)) {
return verificationCache.get(cacheKey);
}
// Verify and cache
VerificationResult result = signature.verify(options);
verificationCache.put(cacheKey, result, CACHE_TTL);
5. Pantau dan Beri Peringatan pada Kegagalan Verifikasi
Lacak tingkat kegagalan verifikasi. Lonjakan tiba‑tiba mungkin menunjukkan:
- Dokumen yang terkompromi dalam sistem Anda
- Sertifikat kedaluwarsa yang perlu diperpanjang
- Masalah konfigurasi setelah penerapan
Aplikasi Praktis dan Kasus Penggunaan
Mari lihat bagaimana ini bekerja dalam skenario nyata:
Kasus Penggunaan 1: Sistem Manajemen Kontrak
Skenario: Firma hukum perlu memverifikasi semua kontrak masuk ditandatangani dengan benar.
Implementasi:
Signature signature = new Signature(contractFile); VerificationResult result = signature.verify(new VerificationOptions());
public boolean processIncomingContract(String contractPath) {
try (Signature signature = new Signature(contractPath)) {
DigitalVerifyOptions options = new DigitalVerifyOptions();
options.setComments("Contract intake verification");
VerificationResult result = signature.verify(options);
if (result.isValid()) {
// Move to approved contracts folder
// Trigger workflow for legal review
return true;
} else {
// Flag for manual review
// Notify sender of invalid signature
return false;
}
}
}
Kasus Penggunaan 2: Audit Dokumen Keuangan
Skenario: Bank perlu memverifikasi perjanjian pinjaman historis selama audit regulasi.
Implementasi: Gunakan verifikasi berbasis tanggal untuk mengonfirmasi tanda tangan valid pada waktu penandatanganan, meskipun sertifikat telah kedaluwarsa.
Kasus Penggunaan 3: Validasi Dokumen Multi‑Pihak
Skenario: Transaksi properti memerlukan verifikasi tanda tangan dari pembeli, penjual, dan agen.
Implementasi: Verifikasi setiap tanda tangan secara independen dan memerlukan ketiganya lulus sebelum melanjutkan penutupan.
Pertimbangan Kinerja
Ketika Anda memproses ribuan dokumen, kinerja penting. Berikut apa yang memengaruhi kecepatan:
Faktor-faktor yang Mempengaruhi Kinerja
- Ukuran dokumen: File yang lebih besar memerlukan waktu lebih lama untuk diverifikasi
- Jumlah tanda tangan: Setiap tanda tangan menambah waktu pemrosesan
- Panjang rantai sertifikat: Rantai yang lebih panjang memerlukan lebih banyak langkah validasi
- Akses jaringan: Validasi sertifikat remote menambah latensi
Strategi Optimasi
- Pemrosesan batch: Verifikasi banyak dokumen secara paralel
- Caching sertifikat lokal: Hindari panggilan jaringan berulang
- Verifikasi selektif: Hanya verifikasi yang diperlukan untuk kasus penggunaan Anda
- Pooling sumber daya: Gunakan kembali objek
Signaturebila memungkinkan (periksa dokumentasi untuk keamanan thread)
ExecutorService dapat mengelola pool thread untuk memverifikasi dokumen secara bersamaan, meningkatkan throughput.
// Example: Batch verification with parallel streams
List<String> filePaths = Arrays.asList("doc1.pdf", "doc2.pdf", "doc3.pdf");
Map<String, Boolean> results = filePaths.parallelStream()
.collect(Collectors.toMap(
path -> path,
path -> {
try (Signature sig = new Signature(path)) {
return sig.verify(options).isValid();
}
}
));
Pertanyaan yang Sering Diajukan
Q: Apa itu tanda tangan digital dan bagaimana perbedaannya dengan tanda tangan elektronik?
A: Tanda tangan digital menggunakan algoritma kriptografi untuk membuktikan keaslian dan mendeteksi perubahan. Tanda tangan elektronik lebih luas—setiap indikator elektronik niat menandatangani (seperti mengetik nama Anda). Tanda tangan digital adalah jenis tanda tangan elektronik yang spesifik dan lebih aman.
Q: Bagaimana cara menginstal GroupDocs.Signature untuk Java?
A: Tambahkan sebagai dependensi Maven atau Gradle (lihat bagian penyiapan di atas), atau unduh JAR langsung dari situs web GroupDocs dan tambahkan ke classpath proyek Anda.
Q: Bisakah saya memverifikasi tanda tangan tanpa lisensi GroupDocs?
A: Ya, Anda dapat menggunakan versi percobaan gratis untuk pengembangan dan pengujian. Memiliki beberapa batasan (seperti watermark), tetapi cukup untuk belajar. Untuk produksi, Anda memerlukan lisensi komersial atau sementara.
Q: Apa yang terjadi jika verifikasi gagal?
A: Metode verify() mengembalikan objek VerificationResult dengan isValid() bernilai false. Anda dapat memeriksa detail hasil untuk memahami mengapa gagal—sertifikat kedaluwarsa, dokumen diubah, algoritma tanda tangan tidak valid, dll.
Q: Bagaimana penanganan tanggal meningkatkan verifikasi tanda tangan?
A: Ini memungkinkan Anda memverifikasi bahwa tanda tangan valid pada titik waktu tertentu, yang penting untuk tujuan hukum dan audit. Tanpa itu, Anda hanya dapat memverifikasi apakah tanda tangan valid saat ini—tidak berguna untuk dokumen historis dengan sertifikat kedaluwarsa.
Q: Bisakah saya memverifikasi beberapa jenis tanda tangan dalam satu dokumen?
A: Tentu saja. Dokumen PDF dapat memiliki beberapa tanda tangan digital dari penandatangan berbeda. Verifikasi masing‑masing secara independen menggunakan objek Signature yang sama dengan opsi verifikasi yang berbeda bila diperlukan.
Q: Apakah GroupDocs.Signature thread‑safe?
A: Periksa dokumentasi terbaru untuk jaminan keamanan thread, tetapi pendekatan paling aman adalah membuat instance Signature terpisah per thread untuk pemrosesan batch.
Q: Format dokumen apa yang didukung?
A: PDF, format Microsoft Office (DOCX, XLSX, PPTX), gambar, dan banyak lainnya. Periksa dokumentasi untuk daftar lengkap.
Sumber Daya Tambahan
- GroupDocs.Signature Documentation - Dokumentasi API lengkap
- API Reference - Referensi kelas dan metode detail
- Download GroupDocs.Signature - Rilis terbaru
- Purchase a License - Opsi lisensi komersial
- Free Trial - Coba sebelum membeli
- Temporary License - Lisensi penuh 30‑hari
- Support Forum - Dukungan komunitas dan diskusi
Terakhir Diperbarui: 2026-07-01
Diuji Dengan: GroupDocs.Signature 23.12 untuk Java
Penulis: GroupDocs