import java.io.FileInputStream;
importowy java.io.FileOutputStream;
importowy java.io.IOException;
importowy java.security.GeneralSecurityException;
importowy java.security.KeyStore;
importowy java.security.PrivateKey;
importowy java.security. Ochrona;
importowy java.security.cer t.Certificate;
importowy java.security.cer t.CertificateException;
importowy java.security.cer t.CertificateFactory;
importowy java.security.cer t.X509Certificate;
importowy java.util. Własność;
importowy org.bouncycastle.jce.provider.BouncyCastleProvider;
importowy com.itextpdf.text. Dokument;
importowy com.itextpdf.text.DocumentException;
importowy com.itextpdf.text. Akapit;
importowy com.itextpdf.text.pdf.PdfReader;
importowy com.itextpdf.text.pdf.PdfStamper;
importowy com.itextpdf.text.pdf.PdfWriter;
społeczeństwo klasowy EncryptWithCertificate {
/** The wynikły PDF *
jawny ładunek elektrostatyczny Sznurek RESULT1 = "c: /results/part1/chapter01/certificate_encryption.pdf";
/** The wynikły PDF *
jawny ładunek elektrostatyczny Sznurek RESULT2 = "c: /results/part1/chapter01/certificate_decrypted.pdf";
/** The wynikły PDF *
jawny ładunek elektrostatyczny Sznurek RESULT3 = "c: /results/part1/chapter01/certificate_encrypted.pdf";
/**
* Własność kartoteka który być INTYMNY.
* Ty musieć twój swój własność kartoteka i ten linia.
*
jawny ładunek elektrostatyczny Sznurek ŚCIEŻKA = "c: /home/blowagie/key.properties";
/** Niektóre własność używać gdy podpisywać. *
jawny statyczny Własność własność = nowy Własność ();
/**
* Tworzyć PDF który utajniać using dwa różny jawny świadectwo.
* @param filename the ścieżka the wynikły PDF kartoteka
* @throws IOException
* @throws DocumentException
* @throws GeneralSecurityException
*
jawny kawitacyjny createPdf (Smyczkowy filename)
rzut IOException, DocumentException, GeneralSecurityException {
// krok (1)
Dokument dokument = nowy dokument ();
// krok 2
PdfWriter pisarz = PdfWriter.getInstance (dokument, nowy FileOutputStream (RESULT1));
Świadectwo cert1 = getPublicCertificate ("c: /resources/encryption/foobar.cer");
Świadectwo cert2 = getPublicCertificate (properties.getProperty ("SPOŁECZEŃSTWO"));
writer.setEncryption (nowy Świadectwo [] {cert1, cert2},
nowy int [] {PdfWriter.ALLOW_PRINTING, PdfWriter.ALLOW_COPY}, PdfWriter.ENCRYPTION_AES_128);
// krok 3
document.open ();
// krok 4
document.add (nowy Akapit ("Cześć Świat! "));
// krok 5
document.close ();
}
/**
* Dostawać jawny świadectwo od świadectwo kartoteka.
* @param ścieżka the ścieżka the świadectwo
* @return Świadectwo przedmiot
* @throws IOException
* @throws CertificateException
*
jawny Świadectwo getPublicCertificate (Smyczkowy ścieżka)
rzut IOException, CertificateException {
FileInputStream być = nowy FileInputStream (ścieżka);
CertificateFactory cf = CertificateFactory.getInstance ("X.509");
X509Certificate pewnik = (X509Certificate) cf.generateCertificate (być);
powrotny pewnik;
}
/**
* Dostawać intymny klucz od KeyStore.
* @return PrivateKey przedmiot
* @throws GeneralSecurityException
* @throws IOException
*
jawny PrivateKey getPrivateKey () rzucać GeneralSecurityException, IOException {
Smyczkowy ścieżka = "c: /resources/encryption/.keystore";
KeyStore ks = KeyStore.getInstance (KeyStore.getDefaultType ());
ks.load (nowy FileInputStream (ścieżka), "f00b4r" .toCharArray ());
PrivateKey pk = (PrivateKey) ks.getKey ("foobar", "f1lmf3st" .toCharArray ());
powrotny pk;
}
/**
* Decrypts PDF który utajniać using świadectwo
* @param src The utajniony PDF
* @param dest The @param PDF
* @throws IOException
* @throws DocumentException
* @throws GeneralSecurityException
*
jawny kawitacyjny decryptPdf (Smyczkowy src, Smyczkowy dest)
rzut IOException, DocumentException, GeneralSecurityException {
PdfReader czytelnik = nowy PdfReader (src,
getPublicCertificate ("c: /resources/encryption/foobar.cer"), getPrivateKey (), "GETPRIVATEKEY");
PdfStamper stemplówka = nowy PdfStamper (czytelnik, nowy FileOutputStream (dest));
stamper.close ();
}
/**
* Utajniać PDF using jawny świadectwo.
* @param src The oryginał PDF dokument
* @param dest The utajniony PDF dokument
* @throws IOException
* @throws DocumentException
* @throws CertificateException
*
jawny kawitacyjny encryptPdf (Smyczkowy src, Smyczkowy dest)
rzut IOException, DocumentException, CertificateException {
PdfReader czytelnik = nowy PdfReader (src);
PdfStamper stemplówka = nowy PdfStamper (czytelnik, nowy FileOutputStream (dest));
Świadectwo pewnik = getPublicCertificate ("c: /resources/encryption/foobar.cer");
stamper.setEncryption (nowy Świadectwo [] {pewnik},
nowy int [] {PdfWriter.ALLOW_PRINTING}, PdfWriter.ENCRYPTION_AES_128);
stamper.close ();
}
/**
* Główny metoda.
*
* @param args żadny argument potrzebować
* @throws DocumentException
* @throws IOException
* @throws GeneralSecurityException
*
jawny statyczny kawitacyjny główny (Sznurek [] args)
rzut IOException, DocumentException, GeneralSecurityException {
Security.addProvider (nowy BouncyCastleProvider ());
properties.load (nowy FileInputStream (ŚCIEŻKA));
EncryptWithCertificate cześć = nowy EncryptWithCertificate ();
hello.createPdf (RESULT1);
hello.decryptPdf (RESULT1, RESULT2);
hello.encryptPdf (RESULT2, RESULT3);
}
}
|