10-16 暗号化

概要:

パスワードによる暗号化

//入力PDFの取得は「PDFを開く」を参照
//暗号化パラメータ設定用クラス
encPtlEncryptStandard256AES enc256 = new PtlEncryptStandard256AES();

//ユーザーパスワード設定やオーナーパスワードの設定は「セキュリティハンドラの設定項目」を参照

doc.setEncrypt(enc256);     //ドキュメントに対して暗号化をする

// 出力PDFの保存は「PDFの保存」を参照

本例では256bit AES暗号化用パラメータクラスを用いています。

その他の暗号化形式に合わせたパラメータ設定用クラスを用いることも可能です。

セキュリティハンドラの設定項目

enc256.setUserPassword(outUserPass);    //ユーザーパスワードの設定
enc256.setOwnerPassword(outOwnerpass);  //オーナーパスワードの設定
//暗号化する対象の設定
enc256.setEncryptComponent(PtlEncrypt.ENCRYPT_COMPONENT.ENCRYPT_EXCEPT_METADATA);

オーナーパスワードの権限設定

//入力PDFの取得は「PDFを開く」を参照
//標準セキュリティハンドラenc256 の取得は「オーナーパスワードによる暗号化」を参照
//オーナーパスワードの設定は「セキュリティハンドラの設定項目」を参照

//ユーザーアクセス許可フラグ用クラス
PtlEncryptPermissionType2 perms2 = new PtlEncryptPermissionType2();
//プリント権限を「不可」に設定
perms2.setPrint(PtlEncryptPermissionType2.PERMISSION_PRINT.PERM_PRINT_NOT_ALLOWED);
//編集権限を「不可」に設定
perms2.setModify(PtlEncryptPermissionType2.PERMISSION_MODIFY.PERM_MODIFY_NOT_ALLOWED);
perms2.setCopy(false);              //コピーを禁止
perms2.setAccessibility(true);      //アクセシビリティ関連のアクセスを許可

enc256.setPermission(perms2);       //セキュリティハンドラにユーザーアクセス許可フラグを設定
//暗号化実行は「パスワードによる暗号化」を参照
//出力PDFの保存は「PDFの保存」を参照

パスワード付きPDFを開く

//入力ファイルパスの設定・入力PDF用クラスdocの作成は「PDFを開く」を参照
doc.setPassword(password);      //PDFを開くためのパスワードを設定
doc.load(inputFile);            //PDFを開く

パスワードはユーザーパスワード・オーナーパスワードで異なる場合がある。

開いた後の用途によってはユーザーパスワードだけでは情報取得や加工ができない点に注意。

パスワードによる暗号化の解除

//パスワード付きPDFの取得は「パスワード付きPDFを開く」を参照
doc.isEncrypted();          //暗号化されているか否かの確認
doc.hasOwnerAuthority();    //オーナー権限を持っているか否かの確認

doc.removeEncrypt();        //暗号化を解除
// 出力PDFの保存は「PDFの保存」を参照

電子証明書を用いた暗号化

証明書による暗号化(証明書セキュリティ)

//入力PDFの取得は「PDFを開く」を参照
PtlParamInput x509Pubkey = new PtlParamInput(X509FilePath); //証明書のパスを指定
PtlRecipient recipient = new PtlRecipient();                //証明書の受信者設定用クラス
recipient.setX509(x509Pubkey);                              //パスの先の証明書を受信者に設定

//証明書セキュリティ用セキュリティハンドラクラス
PtlEncryptPubKey256AES encPubkey256AES = new PtlEncryptPubKey256AES();
//セキュリティハンドラが持つ受信者コンテナを取得
PtlRecipients recipients = encPubkey256AES.getRecipients();
recipients.append(recipient);                               //受信者コンテナに受信者を追加

//暗号化する対象を指定
encPubkey256AES.setEncryptComponent(PtlEncrypt.ENCRYPT_COMPONENT.ENCRYPT_ALL);
doc.setEncrypt(encPubkey256AES);                            //暗号化の実行

// 出力PDFの保存は「PDFの保存」を参照

上記はX.509ファイルによる暗号化の例

証明書セキュリティの権限設定

//入力PDFの取得は「PDFを開く」を参照
//受信者の取得は「証明書による暗号化」を参照
//証明書セキュリティにおけるユーザーアクセス許可フラグ設定用クラス
PtlEncryptPermissionPubKey permission = new PtlEncryptPermissionPubKey();
permission.setFullPermission(false);    //暗号化の解除を含む全権限を持たせないよう設定
permission.setCopy(false);              //コピー禁止
permission.setAccessibility(true);      //アクセシビリティ関連のアクセスを許可
//プリント権限を「不可」に設定
permission.setPrint(PtlEncryptPermissionType2.PERMISSION_PRINT.PERM_PRINT_NOT_ALLOWED);
//編集権限を「不可」に設定
permission.setModify(PtlEncryptPermissionType2.PERMISSION_MODIFY.PERM_MODIFY_NOT_ALLOWED);

recipient.setPermission(permission);    //受信者に対してユーザーアクセス許可フラグを設定

//受信者の設定・証明書による暗号化は「証明書による暗号化」を参照
// 出力PDFの保存は「PDFの保存」を参照

証明書セキュリティPDFを開く

//入力ファイルパスの設定・入力PDF用クラスdocの作成は「PDFを開く」を参照
PtlParamInput pkcs12File = new PtlParamInput(pkcs12FilePath);   //PKCS#12ファイルのパスを指定
doc.setPKCS12(pkcs12File);                              //PDFドキュメントにPKCS#12ファイルを指定
doc.load(inputFile);                                    //PDFを開く

証明書セキュリティの削除

//証明書セキュリティ付きPDF docの取得は「証明書セキュリティPDFを開く」を参照
//ドキュメントの暗号化情報を取得(証明書セキュリティ用のクラスにリキャスト)
PtlEncryptPubKey encryptPubkey = (PtlEncryptPubKey)doc.getEncrypt();
//ユーザーアクセス許可フラグを取得(証明書セキュリティ用のクラスにリキャスト)
PtlEncryptPermissionPubKey permsPubkey = (PtlEncryptPermissionPubKey)encryptPubkey.getPermission();
permsPubkey.hasFullPermission();    //全ての権限を持ったユーザーアクセス許可フラグであるかを確認

doc.removeEncrypt();                //暗号化を解除

// 出力PDFの保存は「PDFの保存」を参照

セキュリティ情報の読み取り

暗号化付きPDFの共通情報取得

//入力PDFの取得は「PDFを開く」を参照
PtlEncrypt encrypt = doc.getEncrypt();  //ドキュメントの暗号化情報を取得

encrypt.getEncryptComponent();          //暗号化の対象が何かの情報を取得
encrypt.getKeyLength();                 //キー長を取得
encrypt.getFilterType();                //セキュリティハンドラのタイプを取得

パスワード付きPDFの情報取得

//パスワード付きPDFの取得は「パスワード付きPDFを開く」を参照
//PDFの暗号化情報encryptの取得・共通の情報取得は「暗号化付きPDFの情報取得」を参照

//セキュリティハンドラのタイプに合わせてリキャスト
encPtlEncryptStandard256AES enc256 = (encPtlEncryptStandard256AES)encrypt;
//ユーザーアクセス許可フラグを取得(標準セキュリティ用のクラスにリキャスト)
PtlEncryptPermissionType2 perms2 = (PtlEncryptPermissionType2)enc256.getPermission();
perms2.getPrint();              //印刷許可に関する権限情報を取得
perms2.getModify();             //編集許可に関する権限情報を取得
perms2.getCopy();               //コピー可否についての情報を取得
perms2.getAccessibility();      //アクセシビリティ関連のアクセス可否を取得

上記は256ビットAES暗号化で暗号化されたPDFだった場合の例

証明書セキュリティPDFの情報取得

//パスワード付きPDFの取得は「パスワード付きPDFを開く」を参照
//PDFの暗号化情報encryptの取得・共通の情報取得は「暗号化付きPDFの情報取得」を参照

//セキュリティハンドラのタイプに合わせてリキャスト
PtlEncryptPubKey encryptPubkey = (PtlEncryptPubKey)encrypt;
//ユーザーアクセス許可フラグを取得(証明書セキュリティ用のクラスにリキャスト)
PtlEncryptPermissionPubKey permsPubkey = (PtlEncryptPermissionPubKey)encryptPubkey.getPermission();
permsPubkey.hasFullPermission();    //全ての権限を持っているか
permsPubkey.getPrint();             //印刷許可に関する権限情報を取得
permsPubkey.getModify();            //編集許可に関する権限情報を取得
permsPubkey.getCopy();              //コピー可否についての情報を取得
permsPubkey.getAccessibility();     //アクセシビリティ関連のアクセス可否を取得

上記は256ビットAES暗号化で暗号化されていたPDFの例

参考:

パスワードを用いた暗号化

・ユーザーパスワードによる暗号化

『PDF CookBook(第2巻)1.1.2 ユーザーパスワードによるセキュリティの設定』

https://www.antenna.co.jp/ptl/cookbook/vol2/i02-0004.html

『PDF CookBook(第2巻)1.1.3 暗号化の対象』

https://www.antenna.co.jp/ptl/cookbook/vol2/i02-0010.html

・オーナーパスワードによる暗号化

『PDF CookBook(第2巻)1.2.1 オーナーパスワードの設定』

https://www.antenna.co.jp/ptl/cookbook/vol2/i02-0005.html

『PDF CookBook(第2巻)1.1.3 暗号化の対象』

https://www.antenna.co.jp/ptl/cookbook/vol2/i02-0010.html

・オーナーパスワードの権限設定

『PDF CookBook(第2巻)1.2.2 印刷不可セキュリティの設定』

https://www.antenna.co.jp/ptl/cookbook/vol2/i02-0006.html

『PDF CookBook(第2巻)1.2.3 変更不可セキュリティの設定』

https://www.antenna.co.jp/ptl/cookbook/vol2/i02-0007.html

『PDF CookBook(第2巻)1.2.4 内容のコピーの制限』

https://www.antenna.co.jp/ptl/cookbook/vol2/i02-0008.html

『PDF CookBook(第2巻)1.2.5 アクセシビリティのための内容の抽出の制限』

https://www.antenna.co.jp/ptl/cookbook/vol2/i02-0009.html

・パスワード付きPDFを開く

『PDF CookBook(第2巻)1.1.1 セキュリティ情報の取得』

https://www.antenna.co.jp/ptl/cookbook/vol2/i02-0003.html

・パスワードによる暗号化の解除

『PDF CookBook(第2巻)1.1.4 セキュリティの解除』

https://www.antenna.co.jp/ptl/cookbook/vol2/i02-0011.html

電子証明書を用いた暗号化

・証明書による暗号化(証明書セキュリティ)

『PDF CookBook(第5巻)6.1.1 証明書によるセキュリティ設定(X.509形式)』

https://www.antenna.co.jp/ptl/cookbook/vol5/i03-0039.html

『PDF CookBook(第5巻)6.1.2 証明書によるセキュリティ設定(PKCS#12形式)』

https://www.antenna.co.jp/ptl/cookbook/vol5/i03-0040.html

・証明書セキュリティの権限設定

『PDF CookBook(第5巻)6.1.3 すべての権限を許可する(setFullPermission)』

https://www.antenna.co.jp/ptl/cookbook/vol5/i03-0041.html

・証明書セキュリティPDFを開く

『PDF CookBook(第5巻)6.2.1 証明書セキュリティ付きPDFから権限情報を取得する』

https://www.antenna.co.jp/ptl/cookbook/vol5/i03-0043.html

・証明書セキュリティの削除

『PDF CookBook(第5巻)6.3.1 証明書セキュリティの解除』

https://www.antenna.co.jp/ptl/cookbook/vol5/i03-0045.html

セキュリティ情報の読み取り

・暗号化付きPDFの情報取得

『PDF CookBook(第2巻)1.1.1 セキュリティ情報の取得』

https://www.antenna.co.jp/ptl/cookbook/vol2/i02-0003.html

・パスワード付きPDFの情報取得

『PDF CookBook(第2巻)1.1.1 セキュリティ情報の取得』

https://www.antenna.co.jp/ptl/cookbook/vol2/i02-0003.html

・証明書セキュリティPDFの情報取得

『PDF CookBook(第5巻)6.2.1 証明書セキュリティ付きPDFから権限情報を取得する』

https://www.antenna.co.jp/ptl/cookbook/vol5/i03-0043.html

Please enter alt text.