1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
|
" codeBody "
import java.io.FileInputStream;
de invoer java.io.FileOutputStream;
de invoer java.io.IOException;
de invoer java.security.GeneralSecurityException;
de invoer java.security.KeyStore;
de invoer java.security.PrivateKey;
de invoer java.security. Veiligheid;
de invoer java.security.cer t.Certificate;
de invoer java.security.cer t.CertificateException;
de invoer java.security.cer t.CertificateFactory;
de invoer java.security.cer t.X509Certificate;
de invoer java.util. Eigenschappen;
de invoer org.bouncycastle.jce.provider.BouncyCastleProvider;
de invoer com.itextpdf.text. Document;
de invoer com.itextpdf.text.DocumentException;
de invoer com.itextpdf.text. Paragraaf;
de invoer com.itextpdf.text.pdf.PdfReader;
de invoer com.itextpdf.text.pdf.PdfStamper;
de invoer com.itextpdf.text.pdf.PdfWriter;
openbare klasse EncryptWithCertificate {
/** Het voortvloeien PDF */
openbaar statisch Koord RESULT1 = „c: /results/part1/chapter01/certificate_encryption.pdf“;
/** Het voortvloeien PDF */
openbaar statisch Koord RESULT2 = „c: /results/part1/chapter01/certificate_decrypted.pdf“;
/** Het voortvloeien PDF */
openbaar statisch Koord RESULT3 = „c: /results/part1/chapter01/certificate_encrypted.pdf“;
/**
* Een eigenschappen dossier dat PRIVÉ is.
* U zou uw eigen eigenschappen moeten maken deze lijn indienen en aanpassen.
*/
de openbare statische WEG van het Koord = „c: /home/blowagie/key.properties“;
/** Sommige eigenschappen toen het ondertekenen gebruikten. */
de openbare statische eigenschappen van Eigenschappen = nieuwe Eigenschappen ();
/**
* Cre�ërt een PDF die gebruikend twee verschillende openbare certificaten wordt gecodeerd.
* @param filename de weg aan het resulterende Pdf- dossier
* @throws IOException
* @throws DocumentException
* @throws GeneralSecurityException
*/
openbare nietige createPdf (filename van het Koord)
werpt IOException, DocumentException, GeneralSecurityException {
// stap 1
Het document van het document = nieuw Document ();
// stap 2
De schrijver van PdfWriter = PdfWriter.getInstance (document, nieuwe FileOutputStream (RESULT1));
Certificaat cert1 = getPublicCertificate („c: /resources/encryption/foobar.cer“);
Certificaat cert2 = getPublicCertificate (properties.getProperty („OPENBAAR“));
writer.setEncryption (nieuw Certificaat [] {cert1, cert2},
nieuw int. [] {PdfWriter.ALLOW_PRINTING, PdfWriter.ALLOW_COPY}, PdfWriter.ENCRYPTION_AES_128);
// stap 3
document.open ();
// stap 4
document.add (nieuwe Paragraaf („Hello Wereld! “));
// stap 5
document.close ();
}
/**
* Krijgt een openbaar certificaat van een certificaatdossier.
* @param weg de weg aan het certificaat
* @return een voorwerp van het Certificaat
* @throws IOException
* @throws CertificateException
*/
openbaar Certificaat getPublicCertificate (de weg van het Koord)
werpt IOException, CertificateException {
FileInputStream is = nieuwe FileInputStream (weg);
CertificateFactory cf. = CertificateFactory.getInstance („X.509“);
X509Certificate cert = (X509Certificate) cf.generateCertificate (is);
terugkeer cert;
}
/**
* Krijgt een privé sleutel van een KeyStore.
* @return een voorwerp PrivateKey
* @throws GeneralSecurityException
* @throws IOException
*/
openbare getPrivateKey PrivateKey () werpt GeneralSecurityException, IOException {
De weg van het koord = „c: /resources/encryption/.keystore“;
KeyStore ks = KeyStore.getInstance (KeyStore.getDefaultType ());
ks.load (nieuwe FileInputStream (weg), „f00b4r“ .toCharArray ());
PrivateKey pk = (PrivateKey) ks.getKey („foobar“, „f1lmf3st“ .toCharArray ());
terugkeer pk;
}
/**
* Decrypteert een PDF die gebruikend een certificaat werd gecodeerd
* @param src Gecodeerde PDF
* @param dest Gedecrypteerde PDF
* @throws IOException
* @throws DocumentException
* @throws GeneralSecurityException
*/
openbare nietige decryptPdf (Koord src, Koord dest)
werpt IOException, DocumentException, GeneralSecurityException {
De lezer van PdfReader = nieuwe PdfReader (src,
getPublicCertificate („c: /resources/encryption/foobar.cer“), getPrivateKey (), „BC“);
De stamper van PdfStamper = nieuwe PdfStamper (lezer, nieuwe FileOutputStream (dest));
stamper.close ();
}
/**
* Codeert een PDF gebruikend een openbaar certificaat.
* @param src het oorspronkelijke Pdf- document
* @param dest het gecodeerde Pdf- document
* @throws IOException
* @throws DocumentException
* @throws CertificateException
*/
openbare nietige encryptPdf (Koord src, Koord dest)
werpt IOException, DocumentException, CertificateException {
De lezer van PdfReader = nieuwe PdfReader (src);
De stamper van PdfStamper = nieuwe PdfStamper (lezer, nieuwe FileOutputStream (dest));
Certificaat cert = getPublicCertificate („c: /resources/encryption/foobar.cer“);
stamper.setEncryption (nieuw Certificaat [] {cert},
nieuw int. [] {PdfWriter.ALLOW_PRINTING}, PdfWriter.ENCRYPTION_AES_128);
stamper.close ();
}
/**
* Hoofdmethode.
*
* @param args geen nodig argumenten
* @throws DocumentException
* @throws IOException
* @throws GeneralSecurityException
*/
openbare statische nietige leiding (Koord [] args)
werpt IOException, DocumentException, GeneralSecurityException {
Security.addProvider (nieuwe BouncyCastleProvider ());
properties.load (nieuwe FileInputStream (WEG));
EncryptWithCertificate hello = nieuwe EncryptWithCertificate ();
hello.createPdf (RESULT1);
hello.decryptPdf (RESULT1, RESULT2);
hello.encryptPdf (RESULT2, RESULT3);
}
}
|