Implementare la firma dei metadati delle immagini con crittografia in Java utilizzando GroupDocs.Signature

Introduzione

Nel panorama digitale odierno, proteggere le informazioni sensibili contenute nei metadati dei documenti è fondamentale. Che si tratti di contratti commerciali riservati o di foto identificative personali, preservare l’integrità e l’autenticità dei metadati delle immagini aiuta a prevenire accessi non autorizzati e manomissioni. GroupDocs.Signature per Java fornisce una soluzione solida per firmare e crittografare in modo sicuro i metadati delle immagini.

Questo tutorial ti guiderà nell’implementazione della firma crittografata dei metadati delle immagini in Java, utilizzando le potenti funzionalità di GroupDocs.Signature. Seguendo questi passaggi, integrerai efficacemente questa funzionalità nelle tue applicazioni Java.

Cosa imparerai:

  • Firma dei metadati dei documenti tramite GroupDocs.Signature per Java
  • Implementazione di firme di oggetti personalizzate con crittografia
  • Impostazione di un ambiente sicuro mediante crittografia a chiave simmetrica

Prerequisiti

Prima di iniziare, assicurarsi che siano soddisfatti i seguenti prerequisiti:

Librerie e dipendenze richieste:

  • GroupDocs.Signature per Java: Assicurati di avere la versione 23.12 o successiva.

Requisiti di configurazione dell’ambiente:

  • Installa Java Development Kit (JDK) sul tuo computer.
  • Utilizzare un ambiente di sviluppo integrato (IDE) come IntelliJ IDEA, Eclipse o NetBeans.

Prerequisiti di conoscenza:

  • Conoscenza di base della programmazione Java.
  • Familiarità con Maven o Gradle per la gestione delle dipendenze.

Impostazione di GroupDocs.Signature per Java

Per utilizzare GroupDocs.Signature nel tuo progetto, includi le dipendenze necessarie come segue:

Utilizzo di Maven

Aggiungi questo al tuo pom.xml file:

<dependency>
    <groupId>com.groupdocs</groupId>
    <artifactId>groupdocs-signature</artifactId>
    <version>23.12</version>
</dependency>

Utilizzo di Gradle

Includi questo nel tuo build.gradle file:

implementation 'com.groupdocs:groupdocs-signature:23.12'

Download diretto

In alternativa, scarica l’ultima versione da GroupDocs.Signature per le versioni Java.

Fasi di acquisizione della licenza

  • Prova gratuita: Inizia con una prova per esplorare le funzionalità.
  • Licenza temporanea: Se necessario, richiedere test approfonditi.
  • Acquistare: Acquisisci una licenza per l’uso in produzione da Documenti di gruppo.

Inizializzazione e configurazione di base

Ecco come puoi inizializzare GroupDocs.Signature nella tua applicazione Java:

import com.groupdocs.signature.Signature;

public class InitializeSignature {
    public static void main(String[] args) {
        // Percorso al documento
        String filePath = "path/to/your/document.jpg";
        
        // Crea una nuova istanza di Signature
        Signature signature = new Signature(filePath);

        System.out.println("GroupDocs.Signature initialized successfully.");
    }
}

Guida all’implementazione

Funzionalità: firma dei metadati con oggetto personalizzato

Panoramica

Questa funzionalità consente di firmare i metadati delle immagini utilizzando un oggetto personalizzato e di crittografarli per una maggiore sicurezza, garantendo che solo le parti autorizzate possano accedere o modificare i metadati.

Implementazione passo dopo passo

1. Definisci la classe di dati della firma del documento

Crea una classe per contenere le informazioni sui tuoi metadati:

import java.math.BigDecimal;
import java.util.Date;

class DocumentSignatureData {
    private String ID;
    private String Author;
    private Date Signed = new Date();
    private BigDecimal DataFactor = new BigDecimal(0.01);

    public String getID() { return ID; }
    public void setID(String value) { ID = value; }

    @FormatAttribute(propertyName = "SignID")
    public final String getAuthor() { return Author; }
    public final void setAuthor(String value) { Author = value; }

    @FormatAttribute(propertyName = "SAuth")
    public final Date getSigned() { return Signed; }
    public final void setSigned(Date value) { Signed = value; }

    @FormatAttribute(propertyName = "SDate", propertyFormat = "yyyy-MM-dd")
    public final BigDecimal getDataFactor() { return DataFactor; }
    public final void setDataFactor(BigDecimal value) { DataFactor = value; }
}
2. Implementare la logica della firma

Ecco come firmare i metadati utilizzando la crittografia:

import com.groupdocs.signature.Signature;
import com.groupdocs.signature.domain.extensions.encryption.IDataEncryption;
import com.groupdocs.signature.domain.extensions.encryption.SymmetricAlgorithmType;
import com.groupdocs.signature.domain.extensions.encryption.SymmetricEncryption;
import com.groupdocs.signature.domain.signatures.metadata.ImageMetadataSignature;
import com.groupdocs.signature.exception.GroupDocsSignatureException;
import com.groupdocs.signature.options.sign.MetadataSignOptions;

import java.io.File;
import java.nio.file.Paths;
import java.util.UUID;

public class SignMetadataWithCustomObject {
    // Inizializza i percorsi dei file con segnaposto
    String filePath = "YOUR_DOCUMENT_DIRECTORY/SampleImage.jpg";
    String outputFilePath = new File("YOUR_OUTPUT_DIRECTORY", 
                                       "SignedImageWithCustomMetadata/SampleImage_signed.jpg").getPath();

    public void run() throws Exception {
        Signature signature = new Signature(filePath);

        // Imposta la chiave e la passphrase per la crittografia
        String key = "1234567890";
        String salt = "1234567890";
        IDataEncryption encryption = new SymmetricEncryption(
            SymmetricAlgorithmType.Rijndael, key, salt);

        MetadataSignOptions options = new MetadataSignOptions();
        DocumentSignatureData documentSignature = new DocumentSignatureData();
        
        // Imposta proprietà di metadati personalizzate
        documentSignature.setID(UUID.randomUUID().toString());
        documentSignature.setAuthor(System.getenv("USERNAME"));
        documentSignature.setSigned(new Date());
        documentSignature.setDataFactor(new BigDecimal("11.22"));

        ImageMetadataSignature mdDocument = new ImageMetadataSignature(41996, documentSignature);
        mdDocument.setDataEncryption(encryption);

        // Aggiungi firme di metadati alle opzioni
        options.getSignatures().add(mdDocument);

        signature.sign(outputFilePath, options);
    }
}

Opzioni di configurazione chiave

  • Crittografia simmetrica: Utilizza l’algoritmo Rijndael per la crittografia.
  • Opzioni di firma dei metadati: Configura il processo di firma e specifica quali metadati firmare.
Suggerimenti per la risoluzione dei problemi
  • Assicurati che i percorsi dei file siano corretti e accessibili.
  • Verificare che la variabile d’ambiente USERNAME sia impostato correttamente.
  • Verificare che la versione della libreria GroupDocs.Signature corrisponda alle dipendenze del codice.

Funzionalità: Firma dei metadati con crittografia

Panoramica

Questa funzionalità si concentra sulla crittografia delle firme dei metadati per proteggere le informazioni sensibili contenute nei file immagine.

Implementazione passo dopo passo

1. Implementare la logica di crittografia

Ecco come firmare i metadati utilizzando la crittografia:

import com.groupdocs.signature.Signature;
import com.groupdocs.signature.domain.extensions.encryption.IDataEncryption;
import com.groupdocs.signature.domain.extensions.encryption.SymmetricAlgorithmType;
import com.groupdocs.signature.domain.extensions.encryption.SymmetricEncryption;
import com.groupdocs.signature.exception.GroupDocsSignatureException;
import com.groupdocs.signature.options.sign.MetadataSignOptions;

import java.io.File;
import java.nio.file.Paths;
import java.util.UUID;

public class SignMetadataWithEncryption {
    // Inizializza i percorsi dei file con segnaposto
    String filePath = "YOUR_DOCUMENT_DIRECTORY/SampleImage.jpg";
    String outputFilePath = new File("YOUR_OUTPUT_DIRECTORY", 
                                       "SignedImageWithEncryption/SampleImage_signed.jpg").getPath();

    public void run() throws Exception {
        Signature signature = new Signature(filePath);

        // Imposta la chiave e la passphrase per la crittografia
        String key = "1234567890";
        String salt = "1234567890";
        IDataEncryption encryption = new SymmetricEncryption(
            SymmetricAlgorithmType.Rijndael, key, salt);

        MetadataSignOptions options = new MetadataSignOptions();
        DocumentSignatureData documentSignature = new DocumentSignatureData();
        
        // Imposta proprietà di metadati personalizzate
        documentSignature.setID(UUID.randomUUID().toString());
        documentSignature.setAuthor(System.getenv("USERNAME"));
        documentSignature.setSigned(new Date());
        documentSignature.setDataFactor(new BigDecimal("11.22"));

        ImageMetadataSignature mdDocument = new ImageMetadataSignature(41996, documentSignature);
        mdDocument.setDataEncryption(encryption);

        // Aggiungi firme di metadati alle opzioni
        options.getSignatures().add(mdDocument);

        signature.sign(outputFilePath, options);
    }
}