GroupDocs.Signature を使用して Java で画像メタデータの暗号化署名を実装する

導入

今日のデジタル環境において、ドキュメントのメタデータに含まれる機密情報の保護は極めて重要です。機密性の高いビジネス契約書や個人の身分証明書用写真などを扱う場合でも、画像メタデータの完全性と真正性を維持することで、不正アクセスや改ざんを防ぐことができます。 Java 用 GroupDocs.Signature 画像のメタデータを安全に署名および暗号化するための強力なソリューションを提供します。

このチュートリアルでは、GroupDocs.Signatureの強力な機能を活用して、Javaで画像メタデータの暗号化署名を実装する方法を説明します。これらの手順に従うことで、この機能をJavaアプリケーションに効果的に統合できます。

学習内容:

  • GroupDocs.Signature for Java を使用してドキュメントのメタデータに署名する
  • 暗号化によるカスタムオブジェクト署名の実装
  • 対称鍵暗号化を使用した安全な環境の構築

前提条件

開始する前に、次の前提条件が満たされていることを確認してください。

必要なライブラリと依存関係:

  • Java 用 GroupDocs.Signature: バージョン 23.12 以降であることを確認してください。

環境設定要件:

  • マシンに Java Development Kit (JDK) をインストールします。
  • IntelliJ IDEA、Eclipse、NetBeans などの統合開発環境 (IDE) を使用します。

知識の前提条件:

  • Java プログラミングに関する基本的な理解。
  • 依存関係管理のための Maven または Gradle に精通していること。

Java 用 GroupDocs.Signature の設定

プロジェクトで GroupDocs.Signature を使用するには、次のように必要な依存関係を含めます。

Mavenの使用

これをあなたの pom.xml ファイル:

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

Gradleの使用

これをあなたの build.gradle ファイル:

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

直接ダウンロード

または、最新バージョンを以下からダウンロードしてください。 GroupDocs.Signature for Java リリース.

ライセンス取得手順

  • 無料トライアルトライアルから始めて、機能を探索してください。
  • 一時ライセンス必要に応じて、広範囲にわたるテストを申請してください。
  • 購入実稼働環境で使用するライセンスを取得する グループドキュメント.

基本的な初期化とセットアップ

Java アプリケーションで GroupDocs.Signature を初期化する方法は次のとおりです。

import com.groupdocs.signature.Signature;

public class InitializeSignature {
    public static void main(String[] args) {
        // ドキュメントへのパス
        String filePath = "path/to/your/document.jpg";
        
        // 署名の新しいインスタンスを作成する
        Signature signature = new Signature(filePath);

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

実装ガイド

機能: カスタムオブジェクトによるメタデータ署名

概要

この機能により、カスタム オブジェクトを使用してイメージ メタデータに署名し、それを暗号化してセキュリティを強化できるため、許可されたユーザーのみがメタデータにアクセスしたり変更したりできるようになります。

ステップバイステップの実装

1. ドキュメント署名データクラスを定義する

メタデータ情報を保持するクラスを作成します。

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. 署名ロジックを実装する

暗号化を使用してメタデータに署名する方法は次のとおりです。

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 {
    // プレースホルダーを使用してファイルパスを初期化する
    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);

        // 暗号化用のキーとパスフレーズを設定する
        String key = "1234567890";
        String salt = "1234567890";
        IDataEncryption encryption = new SymmetricEncryption(
            SymmetricAlgorithmType.Rijndael, key, salt);

        MetadataSignOptions options = new MetadataSignOptions();
        DocumentSignatureData documentSignature = new DocumentSignatureData();
        
        // カスタムメタデータプロパティを設定する
        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);

        // オプションにメタデータ署名を追加する
        options.getSignatures().add(mdDocument);

        signature.sign(outputFilePath, options);
    }
}

主要な設定オプション

  • 対称暗号化暗号化にはRijndaelアルゴリズムを使用します。
  • メタデータ署名オプション署名プロセスを構成し、署名するメタデータを指定します。
トラブルシューティングのヒント
  • ファイル パスが正しく、アクセス可能であることを確認してください。
  • 環境変数を確認してください USERNAME 適切に設定されています。
  • GroupDocs.Signature ライブラリのバージョンがコードの依存関係と一致していることを確認します。

機能: 暗号化によるメタデータ署名

概要

この機能は、メタデータ署名を暗号化して、画像ファイル内の機密情報を保護することに重点を置いています。

ステップバイステップの実装

1. 暗号化ロジックを実装する

暗号化を使用してメタデータに署名する方法は次のとおりです。

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 {
    // プレースホルダーを使用してファイルパスを初期化する
    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);

        // 暗号化用のキーとパスフレーズを設定する
        String key = "1234567890";
        String salt = "1234567890";
        IDataEncryption encryption = new SymmetricEncryption(
            SymmetricAlgorithmType.Rijndael, key, salt);

        MetadataSignOptions options = new MetadataSignOptions();
        DocumentSignatureData documentSignature = new DocumentSignatureData();
        
        // カスタムメタデータプロパティを設定する
        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);

        // オプションにメタデータ署名を追加する
        options.getSignatures().add(mdDocument);

        signature.sign(outputFilePath, options);
    }
}