Beginning cryptography with Java:
Gespeichert in:
1. Verfasser: | |
---|---|
Format: | Buch |
Sprache: | English |
Veröffentlicht: |
Indianapolis, IN
Wiley
2005
|
Schlagworte: | |
Online-Zugang: | Inhaltsverzeichnis |
Beschreibung: | XXXII, 448 S. graph. Darst. |
ISBN: | 0764596330 9780764596339 |
Internformat
MARC
LEADER | 00000nam a2200000zc 4500 | ||
---|---|---|---|
001 | BV021295552 | ||
003 | DE-604 | ||
005 | 20060523 | ||
007 | t | ||
008 | 060117s2005 xxud||| |||| 00||| eng d | ||
010 | |a 2005011272 | ||
020 | |a 0764596330 |9 0-7645-9633-0 | ||
020 | |a 9780764596339 |9 978-0-7645-9633-9 | ||
035 | |a (OCoLC)728030732 | ||
035 | |a (DE-599)BVBBV021295552 | ||
040 | |a DE-604 |b ger |e aacr | ||
041 | 0 | |a eng | |
044 | |a xxu |c US | ||
049 | |a DE-1051 |a DE-573 |a DE-523 |a DE-739 |a DE-858 | ||
050 | 0 | |a QA76.9.A25 | |
082 | 0 | |a 005.8 |2 22 | |
084 | |a ST 276 |0 (DE-625)143642: |2 rvk | ||
100 | 1 | |a Hook, David |e Verfasser |4 aut | |
245 | 1 | 0 | |a Beginning cryptography with Java |c David Hook |
246 | 1 | 3 | |a Cryptography with Java |
264 | 1 | |a Indianapolis, IN |b Wiley |c 2005 | |
300 | |a XXXII, 448 S. |b graph. Darst. | ||
336 | |b txt |2 rdacontent | ||
337 | |b n |2 rdamedia | ||
338 | |b nc |2 rdacarrier | ||
650 | 4 | |a Computer security | |
650 | 4 | |a Cryptography | |
650 | 4 | |a Java (Computer program language) | |
650 | 4 | |a Public key infrastructure (Computer security) | |
650 | 0 | 7 | |a Java |g Programmiersprache |0 (DE-588)4401313-9 |2 gnd |9 rswk-swf |
650 | 0 | 7 | |a Kryptologie |0 (DE-588)4033329-2 |2 gnd |9 rswk-swf |
689 | 0 | 0 | |a Kryptologie |0 (DE-588)4033329-2 |D s |
689 | 0 | 1 | |a Java |g Programmiersprache |0 (DE-588)4401313-9 |D s |
689 | 0 | |5 DE-604 | |
856 | 4 | 2 | |m Digitalisierung UB Passau |q application/pdf |u http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=014616317&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |3 Inhaltsverzeichnis |
999 | |a oai:aleph.bib-bvb.de:BVB01-014616317 |
Datensatz im Suchindex
_version_ | 1804135090268143616 |
---|---|
adam_text | Contents
Acknowledgments
ix
Introduction
xxvii
chapter
1:
The JCA and the JCE
_________________________________________1
Basic Architecture
1
Provider Signing
4
Jurisdiction Policy Files
4
Installing the Unrestricted Policy Files
. 4
Troubleshooting Other Issues
7
How Do You Know the Policy Files Really Behave as Sun Says They Do?
7
Installing the Bouncy Castle Provider
7
Installing by Configuring the Java Runtime
8
Install the JAR File Containing the Provider
8
Enable the Provider by Adding It to the java.security File
8
Installing During Execution
10
How Provider Precedence Works
10
Examining the Capabilities of a Provider
12
Summary
13
Exercises
14
Chapter
2:
Symmetric Key Cryptography
_________________________________15
A First Example
15
A Basic Utility Class
16
The SecretKeySpec Class
19
The Cipher Class
19
Cipher.getlnstanceO
19
Cipher.initO
20
Cipher.updateO
20
Cipher.doFinalQ
20
Symmetric Block Cipher Padding
21
PKCS
Ï5/PKCS
#7
Padding
21
Other Padding Mechanisms
24
Symmetrie Block
Cipher Modes
24
ECB
Mode
25
СВС
Mode
26
Inline IVs
28
Creating an IV
30
Random IVs
31
Creating a SecureRandom Object
31
Pseudorandom IVs
32
A Look at Cipher Parameter Objects
34
The AlgorithmParameters Class
34
CTS Mode: A Special Case of CBC
34
Streaming Symmetric Block Cipher Modes
35
CTR Mode
35
OFB Mode
37
CFB Mode
38
Symmetric Stream Ciphers
39
Generating Random Keys
40
The Key Interface
42
Key.getAlgorithmO
42
Key.getEncodedO
42
Key.getFormatO
· 42
The KeyGenerator Class
42
KeyGenerator.getlnstanceO
43
KeyGenerator.inltO
43
KeyGenerator.generateKeyO
43
Password-Based Encryption
43
Basic
РВЕ
44
The Password
45
The Salt
45
The Iteration Count
45
РВЕ
in the JCE
45
The PBEParameterSpec Class
48
The PBEKeySpec Class
48
The SecretKeyFactory Class
48
Key Wrapping
50
Doing Cipher-Based I/O
52
Summary
55
Exercises
55
chapter
3:
Message Digests. MACs. and HMACs
_________________________57
Getting Started
57
The Problem of Tampering
60
Message Digests
62
The MessageDigest Class
64
MessageDigest.updateO
65
MessageDigest.digestO
65
MessageDigest.isEqualQ
65
Tampering with the Digest
66
MACs Based on Digests—the HMAC
68
The Mac Class
71
Maciniti)
71
Mac.
updatet)
71
Mac.doFinalO
71
MACs Based on Symmetric Ciphers
72
Digests in Pseudorandom Functions
73
РВЕ
Key Generation
74
Mask Generation
77
Doing Digest-Based I/O
79
Summary
81
Exercises
82
Chapter
4:
Asymmetric Key Cryptography
__________________________________83
Getting Started
84
The PublicKey and PrivateKey Interfaces
85
The RSA Algorithm
85
The KeyFactory Class
88
RSAPubllcKeySpec and RSAPublicKey
88
RSAPrivateKeySpec and RSAPrlvateKey
89
Creating Random RSA Keys
89
The KeyPair Class
90
The KeyPairGenerator Class
91
The RSAKeyGenParameterSpec Class
91
Improving RSA Performance
9.1.
Chinese Remainder Theorem
92
RSAPrivateCrtKeySpec and RSAPrivateCrtKey
92
Multi
Prime Chinese Remainder Theorem
93
RSA
Padding Mechanisms
93
PKCS
#1
V1.5 Padding
94
OAEP Padding
96
Wrapping RSA Keys
101
Secret Key Exchange
103
Key Agreement
106
The Diffie-Hellman Algorithm
106
The DHParameterSpec Class
109
Specification Objects for Diffie-Hellman Keys
109
Interfaces for Diffie-Hellman Keys
110
Diffie-Hellman with Elliptic Curve
110
ECField, ECFieldFp, and ECFieldF2m
112
The EllipticCurve Class
113
The ECPoint Class
113
The ECParameterSpec Class
113
The ECGenParameterSpec Class
114
Elliptic Curve Cryptography Before JDK
1.5 115
Diffie-Hellman for More Than Two Parties
115
The El Gamal Algorithm
116
The AlgorithmParameterGenerator Class
118
AlgorithmParameterGenerator.initO
118
AlgorithmParameterGenerator.generateParametersO
118
The DHGenParameterSpec Class
120
Digital Signatures
121
The Signature Class
121
Using the Signature Class in Signature Creation Mode
121
Using the Signature Class in Signature Verification Mode
122
Signature,setParameter() and Signature.getParametersO
122
The Digital Signature Algorithm
122
Regular DSA
123
Elliptic Curve DSA
127
RSA-Based Signature Algorithms
128
PKCS
#11.5
Signatures
129
PSS
Signatures
130
Summary
132
Exercises
133
Chapter
5:
Object Description in Cryptography Using ASN.l
_____________135
What Is ASN.l?
135
Getting Started
136
Basic ASN.l
Syntax
136
Comment Syntax
137
Object Identifiers
137
The Module Structure
138
ASN.l Types
140
Simple Types
140
Bit String Types
141
Character String Types
142
Structured Types
143
Type Annotations
144
Tagging
144
EXPLICIT Tagging
146
IMPLICIT Tagging
147
AUTOMATIC Tagging
148
CHOICE
148
CLASS
149
Encoding Rules
150
BER
Encoding
150
The Primitive Definite-Length Method
151
The Constructed Definite-Length Method
151
The Constructed Indefinite-Length Method
152
DER
Encoding
152
The Bouncy Castle ASN.l API
153
Creating the Basic ASN.l Types
154
Dealing with Tagging
155
Defining Your Own Objects
156
Analyzing an Unknown Encoded Object
162
Using ASN.l in Java: Some Real Examples
164
Some Basic ASN.l Structures
164
The Algorithmldentifier Structure
164
The Attribute Structure
165
Encoding an IV
165
Inside a PKCS
#1
VI.
5
Signature
166
Encoding
PSS
Signature Parameters
169
Encoding Public and Private Keys
17.1.
The XSOQEncodedKeySpec Class
171
The PKCSeEncodedKeySpec Class
174
The EncryptedPrivateKeylnfo Class
176
Summary
181
Exercises
182
Chapter
6:
Distinguished Names and Certificates
________________________181
Getting Started
184
Distinguished Names
184
The
XöOOPrincipal
Class
186
XSOOPrincipal.getEncodedO
186
XSOOPrincipal.getNameO
186
Public Key Certificates
187
The Certificate Class
187
Certificate.getTypef)
187
Certificate.getPublicKeyO
188
Certificate.verifyO
188
Certificate.getEncodedO
, 188
X.509 Certificates
188
The
XõC^Certificate
Class
189
X509Certificate.getTBSCertificate()
189
XSODCertificate.getVersionO
190
XöOgCertificate.getSerialNumberO
190
XoOgCertlflcate.getlssuerXSOOPrincipalO
191
XöOgCertificate.getNotBeforeO
and XSOQCertificate.getNotAfterO
191
X509Certificate.checkValidity()
192
X509Certif¡cate.getSubjectX500Pr¡ncipal()
192
XSOQCertificate.getlssuerUniquelDO
192
XöOgCertificate.getSubjectUniquelDO
192
XöOgCertificate-getSignatureO
193
X5O9Certiflcate.getSigAlgOID(), and
XöOgCertificate.getSigAlgParamsO
193
XöOgCertificate.getSigAlgNameO 193
X.509 Extensions
195
The X509Extension Interface
196
XöOgExtension.getCriticalExtensionsOIDsO 197
X509Extension.getExtensíonValue()
197
XoUDExtension-getNonCriticalExtensionOIDsO
197
XSODExtension.hasUnsupportedCriticalExtensionO
197
Extensions Supported Directly by
XouDCertificate
198
XSOgCertificate.getKeyUsageQ
198
XSOgCertificate.getSubjectAlternativeNamesO
199
XSOgCertificate.getlssuerAlternativeNamesO
200
X509Certificate.getBasicConstra¡nts()
200
XoOgCertificate-getExtendedKeyUsageO
200
Reading and Writing Certificates
204
The CertificateFactory Class
204
CertificateFactory.generateCertificatet)
204
CertificateFactory.generateCertificatesO
204
Certification
Requests
208
Writing a Simple Certificate Authority
214
Certificate Paths and Stores
219
The CertPath Class
219
CertPath.getTypeO
220
CertPath.getCertificatesO
220
CertPath.getEncodedO
220
CertPath.getEncodingsO
220
The CertStore Class
221
The
XöOgCertSelector
Class
222
X509CertSelector..setCert¡ficate()
222
XöOQCertSelector.setlssuerO 222
XSOQCertSelector.setSerialNumberO
223
XöOQCertSelector.setSubjectO 223
Summary
224
Exercises
225
Chapter
7:
Certificate Revocation and Path Validation
_______________222
Getting Started
228
Certificate Revocation Lists
230
The CRL Class
231
CRL.getTypeO
231
CRLisRevokedO
231
X.509 Certificate Revocation Lists
232
The X509CRL Class
233
XSOgCRL.getTBSCertListO
233
XöOgCRLgetVersionO
234
XSODCRLgetlssuerXSOOPrincipalO
234
XöOgCRL.getThisUpdateO
and XoOQCRLgetNextUpdateO
234
XöOgCRL-getRevokedCertificatesO
235
XöOgCRLgetRevokedCertificateO
235
XöOgCRL-getSignatureO
235
XöOgCRLgetSigAlgOIDO, and XöOgCRL.getSigAlgParamsO
235
XöOgCRL.getSigAlgNameO
235
X509CRL.verify()
235
XöOgCRL-getEncodedO
^36
The XoOQCRLEntry Class
236
XöOgCRLEntry.getCertificatetssuerO
236
XSCOCRLEntry.getRevocationDateO
236
XöOgCRLEntry.getSerialNumberO
236
XöOgCRLEntry.hasExtensionsO
236
X.509
CRL Entry Extensions
237
The ReasonCode Extension
237
The HoldlnstructionCode Extension
237
The InvalidityDate Extension
238
The Certificatelssuer Extension
238
X.509 CRL Extensions
238
The AuthorityKeyldentifier Extension
239
The IssuerAltemativeName Extension
239
The CRLNumber Extension
239
The DeltaCRLIndicator Extension
239
The IssuingDistributionPoint Extension
239
The FreshestCRL Extension
240
Reading CRLs using the CertificateFactory Class
243
CertificateFactory.generateCRLO
243
CertificateFactory.generateCRLsO
243
The
XöC^CRLSelector
Class
245
XöOgCRLSelector.addlssuerO
and XSOQCRLSelector.adcllssuerNameO
245
XoOQCRLSelector-setDateAndTimeO
246
XöOgCRLSelector.setMaxCRLO
and
XöOgCRLSelector.setMinCRLO
246
Online Certificate Status Protocol
248
The CertificatelD Class
248
CertificatelD.getHashAlgOIDO
249
CertificatelD.getlssuerNameHashO
249
CertificatelD.getlssuerKeyHasht)
249
CertificatelD.getSerialNumberO
249
The OCSPReq Class
249
OCSPReq.getTBSRequestO
250
OCSPReq.getVersionO
250
OCSPReq.getRequestorNameO
250
OCSPReq.getRequestListO
250
OCSPReq.isSignedf)
251
OCSPReq.getSignaturef) and OCSPReq.getSignatureAlgOIDO
251
OCSPReq .getCertificatesO
251
OCSP Request Extensions
251
The Nonce Extension
251
The Acceptable Response Types Extension
252
The Service Locator Extension
252
The OCSPResp Class
255
The BasicOCSPResp Class
256
BasicOCSPResp.getTBSResponseDataO
256
BasicOCSPResponse.getVersionO
257
BasicOCSPResponse.getResponderlDQ
257
BasicOCSPResponse.getProducedAtO 257
BasicOCSPResponse.getResponsesO 257
OCSP
Response
Extensions
258
The CRL References Extension
258
The Archive Cutoff Extensions
258
X.509 CRL Entry Extensions
259
Certificate Path Validation
264
The TrustAnchor Class
264
The PKIXParameters Class
265
PKIXParameters.addCertStoreO and PKIXParameters.setCertStoresO
266
PKIXParameters.setDateO
266
PKIXParameters.setTargetCertConstraintsO
266
PKIXParameters.setRevocationEnabledO
266
The CertPathValidator Class
266
CertPathValidator.getDefaultTypeO
267
CertPathValidator.getAlgorithmO
267
CertPathValidator.validateO
267
The PKIXCertPathValidatorResult Class
267
The PKiXCertPathChecker Class
270
PKIXCertPathChecker.initO
270
PKIXCertPathChecker.isForwardCheckingSupportedO
271
PKIXCertPathChecker.getSupportedExtensionsO
271
PKIXCertPathChecker.checkO
271
Building a Valid Path from a CertStore
275
The CertPathBuilder Class
275
The PKIXBuilderParameters Class
275
Summary
278
Exercises
279
Chapter
8:
Key and Certificate Management Using
Keystores ______
_281
Getting Started
281
The KeyStore Class
283
Keystore Types
284
Standard JDK Keystore Types
284
Bouncy Castle Keystore Types
284
The Basic KeyStore API
285
KeyStore. aliasesO
285
KeyStore.containsAliasO
285
KeyStore.deleteEntryO
285
KeyStore.getCertificateO
285
KeyStore.getCertificateAliasO
285
KeyStore.getCertificateChainO
286
KeyStore.getCreationDateO
286
KeyStore.getKeyO
286
KeyStore.getTypeO
286
KeyStore.isCertificateEntryO
286
KeyStore.isKeyEntryO
286
KeyStore.IoadO
286
KeyStore .setCertificateEntryO
287
KeyStore.setKeyEntryO
287
KeyStore.sizeO
287
KeyStore.store()
287
KeyStore
Nested Classes and Interfaces
290
The KeyStore.ProtectionParameter Interface
290
KeyStore.CallbackHandlerProtection
291
KeyStore.PasswordProtection
291
The KeyStore.Entry Interface
291
KeyStore.getEntryO
291
KeyStore.setEntryO
291
KeyStore.entrylnstanceOfO
292
KeyStore.
Pri
vate
Key Entry
292
KeyStore. SecretKey Entry
292
KeyStore.TrustedCertificateEntry
292
The KeyStore.Builder Class
295
KeyStore.Builder.getKeyStoreO
295
KeyStore.Builder.getProtectionParameterO
295
KeyStore.Builder.newlnstanceO
295
The KeyStore.LoadStoreParameter Interface
297
The PKCS
#12
Format
298
Using PKCS
#12
with the KeyStore API
300
The
Keytool 304
Keytool
Commands
304
General Command Options
304
Commands and Their Options
305
The JVM s CA Keystore
307
Some
Keytool
Experiments
308
Generating Some Sample Keystore Files
308
Jarsigning and Java Policy
312
The Jarsigner
312
Java Policy Files
312
Summary
313
Exercises
314
Q;
CMS and S/MIME
_________________________________________315
Getting Started
315
Cryptographic Message Syntax
318
Basic CMS
318
The Data Content Type
319
The CMSProcessable Interface
320
CMS Signed-Data
320
ASN.l Structure
321
The DigestAlgorithms Field
322
The EncapContentlnfo Field
322
The Certificates and
Cris
Fields
322
The Signerlnfos Field
323
The Version Field
325
The Signerlnformation Class
325
Signerlnformation.getDigestAlgOIDO
325
Signerlnformation.getDigestAlgParamsO
325
Signerlnformation.getEncryptionAlgOIDO
326
Signerlnformation.getEncryptionAlgParamsO
326
Signerlnformation.getSIDO
326
Signerlnformation.getSignatureO
326
Signerlnformation.getSignedAtthbutesO
326
Signerlnformation.getUnsignedAttributesO
326
Signerlnformation.verifyO
326
Signerlnformation.replaceUnsignedAttributesO
327
The SignerlnformationStore Class
327
SignerlnformationStore.getQ
327
SignerlnformationStore .getSignersO
327
SignerlnformationStore. size()
327
The CMSSignedData Class
32/
CMSSignedData.getCertificatesAndCRLsO
328
CMSSignedData.getEncodedQ
328
CMSSignedData.getSignedContentO
328
CMSSignedData.getSignedContentOIDO
328
CMSSignedData.getSignerinfosO
328
CMSSignedData.replaceSignersO
328
CMS Enveloped-Data
332
ASN.l Structure
333
The Originatorlnfo Field
333
The Recipientlnfos Field
333
The EncryptedContentlnfo Field
334
The UnprotectedAttrs Field
335
The Version Field
335
The Recipientlnformation Class
335
Recipientlnformation.getContentO
336
Recipientlnformation.getKeyEncryptionAlgOIDO
336
Recipientlnformation.getKeyEncryptionAlgorithmParametersO
336
Recipientlnformation.getKeyEncryptionAlgParamsO
336
Recipientlnformation.getRIDO
336
The KeyTransRecipientlnformation Class
336
The RecipientlnformationStore Class
337
RecipientlnformationStore.getO
337
RecipientlnformationStore.getRecipientsO
337
RecipientlnformationStore. size()
337
The CMSEnvelopedData Class
337
CMSEnvelopedData.getEncodedO
338
CMSEnvelopedData.getEncryptionAlgOIDO
338
CMSEnvelopedData.getEncryptionAlgorithmParametersO
338
CMSEnvelopedData.getEncryptionAlgParamsO
338
CMSEnvelopedData.getRecipientlnfosO
338
CMSEnvelopedData.getUnprotectedAttributesO
338
The KEKRecipientlnformation Class
342
Data Compression in CMS
345
ASN.l Structure
345
The CMSCompressedData Class
345
CMSCompressedData.getContentO
345
CMSCompressedData.getEncodedQ
345
Secure/Multipurpose Internet Mail Extensions (S/MIME)
347
The CMSProcessableBodyPart Class
348
The SMIMEUtil Class
348
SMIMEUtil.toMimeBodyPartO
348
SMIMEUtil.createlssuerAndSerialNumberForO
348
S/MIME Signed Messages
348
The CMSProcessableBodyPartlnbound Class
349
The CMSProcessableBodyPartOutbound Class
349
The SMIMESigned Class
349
SMIMESigned.getContentQ
350
SMIMESigned.getContentAsMimeMessageO
350
SMIMESigned.getContentWithSignatureQ
350
S/MIME Enveloped Messages
354
The SMIMEEnveloped Class
355
Combining Signing with Encryption
357
S/MIME Compressed Messages
361
The SMIMECompressed Class
361
Summary
363
Exercises
364
10:
SSL
and TLS
_____________________________________________365
The SSL and TLS Protocols
365
Getting Started
366
A Basic SSL Client and Server
369
The SSLSocketFactory Class
370
SSLSocketFactory.createSocketO
370
SSLSocketFactory.getDefaultO
370
SSLSocketFactory.getDefaultCipherSuitesO
370
SSLSocketFactory.getSupportedCipherSuitesO
370
The SSLServerSocketFactory Class
370
SSLServerSocketFactory.createServerSocketO
371
SSLServerSocketFactory.getDefaultO
371
SSLServerSocketFactory.getDefaultCipherSuitesO and
SSLServerSocketFactory.getSupportedCipherSuitesO
371
The SSLSocket Class
371
SSLSocket.setEnabledCipherSuitesO
371
SSLSocket.setEnabledProtocolsO
372
SSLSocketsetEnableSessionCreationO
372
SSLSocket.setUseClientModeO
372
SSLSocket.startHandshakeO
372
The SSLServerSocket Class
373
SSLServerSocketsetEnabledCipherSuitesO
373
SSLServerSocket.setEnabledProtocolsO
373
SSLServerSocket.setEnableSessionCreationO
373
SSLServerSocket.setUseClientModeO
373
The HandshakeCompletedListener Interface
377
Client-Side Authentication
378
SSLServerSocket Configuration
379
SSLServerSocket.setNeedClientAuthO
379
SSLServerSocket.setWantClientAuthO
379
Server-Mode SSLSocket Configuration
379
The setNeedClientAuthO Method
379
The setWantClientAuthO Method
379
The SSLContext Class
379
SSLContext.initO 380
SSLContext.getClientSessionContextO
380
SSLContext.getProtocolO
380
SSLContext.getServerSessionContextO
381
SSLContext.getServerSocketFactoryO
381
SSLContext.getSocketFactoryO
381
The KeyManagerFactory Class
381
KeyManagerFactory.initO
381
KeyManagerFactory.getAlgorithmQ
382
KeyManagerFactory.getDefaultAlgorithmO
382
KeyManagerFactory.getKeyManagersQ
382
The TrustManagerFactory Class
386
TrustManagerFactory.initO
386
TrustManagerFactory.getAlgorithmO
386
TrustManagerFactory.getDefaultAlgorithmO
386
TrustManagerFactory.getTrustManagersO
387
Managing SSL Session Information
389
The SSLSession Interface
389
SSLSession.getCipherSuiteO
389
SSLSession.getCreationTimeO
389
SSLSession.getldO
390
SSLSession.getLastAccessedTimeO
390
SSLSession.getLocalCertificatesO
390
SSLSession.getLocalPrincipalO
390
SSLSession .getPeerCertif icatesf)
390
SSLSession.getPeerHostO
390
SSLSession.getPeerPortO
390
SSLSession.getPeerPrincipalO
390
SSLSession.getProtocolO
391
SSLSession.getSessionContextO
391
SSLSession.
invalidateţ)
391
SSLSession.isValidO
391
SSLSession.putValueO
391
Dealing with HTTPS
394
The HttpsURLConnection Class
394
HttpsURLConnection.getCipherSuiteO
395
HttpsURLConnection .getHostnameVerifierO
395
HttpsURLConnection.getLocalCertificatesO
395
HttpsURLConnection.getLocalPrincipalO
395
HttpsURLConnection.getPeerPrincipaiO
395
HttpsURLConnection.getServerCertificatesO
396
HttpsURLConnection.getSSLSocketFactoryO
396
HttpsURLConnection.setDefaultSSLSocketFactoryO
396
HttpsURLConnection.setDefaultHostnameVerifierO
396
The HostnameVerifier Interface
396
Summary
401
Exercises
402
A;
Solutions to Exercises
____________________________________403
Chapter
1
Solutions
403
Chapter
2
Solutions
403
Chapter
3
Solutions
404
Chapter
4
Solutions
405
Chapter
5
Solutions
406
Chapter
6
Solutions
407
Chapter
7
Solutions
408
Chapter
8
Solutions
409
Chapter
9
Solutions
412
Chapter
10
Solutions
415
Appendix B: Algorithms Provided by the Bouncy Castle Provider
___________417
Asymmetric Ciphers
417
Certificate Path Validation
417
Key Agreement Algorithms
417
Key Stores
418
MAC Algorithms
418
Signature Algorithms
418
Message Digests
418
Symmetric Block Ciphers
418
Symmetric Stream Ciphers
419
Appendix C: Using the Bouncy Castle API for Elliptic Curve
_______________421
Elliptic Curve Interfaces
421
The ECKey Interface
421
The ECPrivateKey Interface
422
The ECPublicKey Interface
422
The ECPointEncoder Interface
422
Elliptic Curve Classes
422
The ECNamedCurveParameterSpec Class
422
The ECNamedCurveSpec Class
423
The ECParameterSpec Class
423
The ECPrivateKeySpec Class
423
The ECPublicKeySpec Class
423
Appendix D:
Bibliography and Further Reading
__________________________425
ASN.l Standards
425
IETF Working Group Charter Pages
425
NIST Publications
426
PKCS Standards
426
RFCs
427
Other Useful Standards
428
Useful References
428
Useful Web Links
429
Index
431
|
adam_txt |
Contents
Acknowledgments
ix
Introduction
xxvii
chapter
1:
The JCA and the JCE
_1
Basic Architecture
1
Provider Signing
4
Jurisdiction Policy Files
4
Installing the Unrestricted Policy Files
. 4
Troubleshooting Other Issues
7
How Do You Know the Policy Files Really Behave as Sun Says They Do?
7
Installing the Bouncy Castle Provider
7
Installing by Configuring the Java Runtime
8
Install the JAR File Containing the Provider
8
Enable the Provider by Adding It to the java.security File
8
Installing During Execution
10
How Provider Precedence Works
10
Examining the Capabilities of a Provider
12
Summary
13
Exercises
14
Chapter
2:
Symmetric Key Cryptography
_15
A First Example
15
A Basic Utility Class
16
The SecretKeySpec Class
19
The Cipher Class
19
Cipher.getlnstanceO
19
Cipher.initO
20
Cipher.updateO
20
Cipher.doFinalQ
20
Symmetric Block Cipher Padding
21
PKCS
Ï5/PKCS
#7
Padding
21
Other Padding Mechanisms
24
Symmetrie Block
Cipher Modes
24
ECB
Mode
25
СВС
Mode
26
Inline IVs
28
Creating an IV
30
Random IVs
31
Creating a SecureRandom Object
31
Pseudorandom IVs
32
A Look at Cipher Parameter Objects
34
The AlgorithmParameters Class
34
CTS Mode: A Special Case of CBC
34
Streaming Symmetric Block Cipher Modes
35
CTR Mode
35
OFB Mode
37
CFB Mode
38
Symmetric Stream Ciphers
39
Generating Random Keys
40
The Key Interface
42
Key.getAlgorithmO
42
Key.getEncodedO
42
Key.getFormatO
· 42
The KeyGenerator Class
42
KeyGenerator.getlnstanceO
43
KeyGenerator.inltO
43
KeyGenerator.generateKeyO
43
Password-Based Encryption
43
Basic
РВЕ
44
The Password
45
The Salt
45
The Iteration Count
45
РВЕ
in the JCE
45
The PBEParameterSpec Class
48
The PBEKeySpec Class
48
The SecretKeyFactory Class
48
Key Wrapping
50
Doing Cipher-Based I/O
52
Summary
55
Exercises
55
chapter
3:
Message Digests. MACs. and HMACs
_57
Getting Started
57
The Problem of Tampering
60
Message Digests
62
The MessageDigest Class
64
MessageDigest.updateO
65
MessageDigest.digestO
65
MessageDigest.isEqualQ
65
Tampering with the Digest
66
MACs Based on Digests—the HMAC
68
The Mac Class
71
Maciniti)
71
Mac.
updatet)
71
Mac.doFinalO
71
MACs Based on Symmetric Ciphers
72
Digests in Pseudorandom Functions
73
РВЕ
Key Generation
74
Mask Generation
77
Doing Digest-Based I/O
79
Summary
81
Exercises
82
Chapter
4:
Asymmetric Key Cryptography
_83
Getting Started
84
The PublicKey and PrivateKey Interfaces
85
The RSA Algorithm
85
The KeyFactory Class
88
RSAPubllcKeySpec and RSAPublicKey
88
RSAPrivateKeySpec and RSAPrlvateKey
89
Creating Random RSA Keys
89
The KeyPair Class
90
The KeyPairGenerator Class
91
The RSAKeyGenParameterSpec Class
91
Improving RSA Performance
9.1.
Chinese Remainder Theorem
92
RSAPrivateCrtKeySpec and RSAPrivateCrtKey
92
Multi
Prime Chinese Remainder Theorem
93
RSA
Padding Mechanisms
93
PKCS
#1
V1.5 Padding
94
OAEP Padding
96
Wrapping RSA Keys
101
Secret Key Exchange
103
Key Agreement
106
The Diffie-Hellman Algorithm
106
The DHParameterSpec Class
109
Specification Objects for Diffie-Hellman Keys
109
Interfaces for Diffie-Hellman Keys
110
Diffie-Hellman with Elliptic Curve
110
ECField, ECFieldFp, and ECFieldF2m
112
The EllipticCurve Class
113
The ECPoint Class
113
The ECParameterSpec Class
113
The ECGenParameterSpec Class
114
Elliptic Curve Cryptography Before JDK
1.5 115
Diffie-Hellman for More Than Two Parties
115
The El Gamal Algorithm
116
The AlgorithmParameterGenerator Class
118
AlgorithmParameterGenerator.initO
118
AlgorithmParameterGenerator.generateParametersO
118
The DHGenParameterSpec Class
120
Digital Signatures
121
The Signature Class
121
Using the Signature Class in Signature Creation Mode
121
Using the Signature Class in Signature Verification Mode
122
Signature,setParameter() and Signature.getParametersO
122
The Digital Signature Algorithm
122
Regular DSA
123
Elliptic Curve DSA
127
RSA-Based Signature Algorithms
128
PKCS
#11.5
Signatures
129
PSS
Signatures
130
Summary
132
Exercises
133
Chapter
5:
Object Description in Cryptography Using ASN.l
_135
What Is ASN.l?
135
Getting Started
136
Basic ASN.l
Syntax
136
Comment Syntax
137
Object Identifiers
137
The Module Structure
138
ASN.l Types
140
Simple Types
140
Bit String Types
141
Character String Types
142
Structured Types
143
Type Annotations
144
Tagging
144
EXPLICIT Tagging
146
IMPLICIT Tagging
147
AUTOMATIC Tagging
148
CHOICE
148
CLASS
149
Encoding Rules
150
BER
Encoding
150
The Primitive Definite-Length Method
151
The Constructed Definite-Length Method
151
The Constructed Indefinite-Length Method
152
DER
Encoding
152
The Bouncy Castle ASN.l API
153
Creating the Basic ASN.l Types
154
Dealing with Tagging
155
Defining Your Own Objects
156
Analyzing an Unknown Encoded Object
162
Using ASN.l in Java: Some Real Examples
164
Some Basic ASN.l Structures
164
The Algorithmldentifier Structure
164
The Attribute Structure
165
Encoding an IV
165
Inside a PKCS
#1
VI.
5
Signature
166
Encoding
PSS
Signature Parameters
169
Encoding Public and Private Keys
17.1.
The XSOQEncodedKeySpec Class
171
The PKCSeEncodedKeySpec Class
174
The EncryptedPrivateKeylnfo Class
176
Summary
181
Exercises
182
Chapter
6:
Distinguished Names and Certificates
_181
Getting Started
184
Distinguished Names
184
The
XöOOPrincipal
Class
186
XSOOPrincipal.getEncodedO
186
XSOOPrincipal.getNameO
186
Public Key Certificates
187
The Certificate Class
187
Certificate.getTypef)
187
Certificate.getPublicKeyO
188
Certificate.verifyO
188
Certificate.getEncodedO
, 188
X.509 Certificates
188
The
XõC^Certificate
Class
189
X509Certificate.getTBSCertificate()
189
XSODCertificate.getVersionO
190
XöOgCertificate.getSerialNumberO
190
XoOgCertlflcate.getlssuerXSOOPrincipalO
191
XöOgCertificate.getNotBeforeO
and XSOQCertificate.getNotAfterO
191
X509Certificate.checkValidity()
192
X509Certif¡cate.getSubjectX500Pr¡ncipal()
192
XSOQCertificate.getlssuerUniquelDO
192
XöOgCertificate.getSubjectUniquelDO
192
XöOgCertificate-getSignatureO
193
X5O9Certiflcate.getSigAlgOID(), and
XöOgCertificate.getSigAlgParamsO
193
XöOgCertificate.getSigAlgNameO 193
X.509 Extensions
195
The X509Extension Interface
196
XöOgExtension.getCriticalExtensionsOIDsO 197
X509Extension.getExtensíonValue()
197
XoUDExtension-getNonCriticalExtensionOIDsO
197
XSODExtension.hasUnsupportedCriticalExtensionO
197
Extensions Supported Directly by
XouDCertificate
198
XSOgCertificate.getKeyUsageQ
198
XSOgCertificate.getSubjectAlternativeNamesO
199
XSOgCertificate.getlssuerAlternativeNamesO
200
X509Certificate.getBasicConstra¡nts()
200
XoOgCertificate-getExtendedKeyUsageO
200
Reading and Writing Certificates
204
The CertificateFactory Class
204
CertificateFactory.generateCertificatet)
204
CertificateFactory.generateCertificatesO
204
Certification
Requests
208
Writing a Simple Certificate Authority
214
Certificate Paths and Stores
219
The CertPath Class
219
CertPath.getTypeO
220
CertPath.getCertificatesO
220
CertPath.getEncodedO
220
CertPath.getEncodingsO
220
The CertStore Class
221
The
XöOgCertSelector
Class
222
X509CertSelector.setCert¡ficate()
222
XöOQCertSelector.setlssuerO 222
XSOQCertSelector.setSerialNumberO
223
XöOQCertSelector.setSubjectO 223
Summary
224
Exercises
225
Chapter
7:
Certificate Revocation and Path Validation
_222
Getting Started
228
Certificate Revocation Lists
230
The CRL Class
231
CRL.getTypeO
231
CRLisRevokedO
231
X.509 Certificate Revocation Lists
232
The X509CRL Class
233
XSOgCRL.getTBSCertListO
233
XöOgCRLgetVersionO
234
XSODCRLgetlssuerXSOOPrincipalO
234
XöOgCRL.getThisUpdateO
and XoOQCRLgetNextUpdateO
234
XöOgCRL-getRevokedCertificatesO
235
XöOgCRLgetRevokedCertificateO
235
XöOgCRL-getSignatureO
235
XöOgCRLgetSigAlgOIDO, and XöOgCRL.getSigAlgParamsO
235
XöOgCRL.getSigAlgNameO
235
X509CRL.verify()
235
XöOgCRL-getEncodedO
^36
The XoOQCRLEntry Class
236
XöOgCRLEntry.getCertificatetssuerO
236
XSCOCRLEntry.getRevocationDateO
236
XöOgCRLEntry.getSerialNumberO
236
XöOgCRLEntry.hasExtensionsO
236
X.509
CRL Entry Extensions
237
The ReasonCode Extension
237
The HoldlnstructionCode Extension
237
The InvalidityDate Extension
238
The Certificatelssuer Extension
238
X.509 CRL Extensions
238
The AuthorityKeyldentifier Extension
239
The IssuerAltemativeName Extension
239
The CRLNumber Extension
239
The DeltaCRLIndicator Extension
239
The IssuingDistributionPoint Extension
239
The FreshestCRL Extension
240
Reading CRLs using the CertificateFactory Class
243
CertificateFactory.generateCRLO
243
CertificateFactory.generateCRLsO
243
The
XöC^CRLSelector
Class
245
XöOgCRLSelector.addlssuerO
and XSOQCRLSelector.adcllssuerNameO
245
XoOQCRLSelector-setDateAndTimeO
246
XöOgCRLSelector.setMaxCRLO
and
XöOgCRLSelector.setMinCRLO
246
Online Certificate Status Protocol
248
The CertificatelD Class
248
CertificatelD.getHashAlgOIDO
249
CertificatelD.getlssuerNameHashO
249
CertificatelD.getlssuerKeyHasht)
249
CertificatelD.getSerialNumberO
249
The OCSPReq Class
249
OCSPReq.getTBSRequestO
250
OCSPReq.getVersionO
250
OCSPReq.getRequestorNameO
250
OCSPReq.getRequestListO
250
OCSPReq.isSignedf)
251
OCSPReq.getSignaturef) and OCSPReq.getSignatureAlgOIDO
251
OCSPReq .getCertificatesO
251
OCSP Request Extensions
251
The Nonce Extension
251
The Acceptable Response Types Extension
252
The Service Locator Extension
252
The OCSPResp Class
255
The BasicOCSPResp Class
256
BasicOCSPResp.getTBSResponseDataO
256
BasicOCSPResponse.getVersionO
257
BasicOCSPResponse.getResponderlDQ
257
BasicOCSPResponse.getProducedAtO 257
BasicOCSPResponse.getResponsesO 257
OCSP
Response
Extensions
258
The CRL References Extension
258
The Archive Cutoff Extensions
258
X.509 CRL Entry Extensions
259
Certificate Path Validation
264
The TrustAnchor Class
264
The PKIXParameters Class
265
PKIXParameters.addCertStoreO and PKIXParameters.setCertStoresO
266
PKIXParameters.setDateO
266
PKIXParameters.setTargetCertConstraintsO
266
PKIXParameters.setRevocationEnabledO
266
The CertPathValidator Class
266
CertPathValidator.getDefaultTypeO
267
CertPathValidator.getAlgorithmO
267
CertPathValidator.validateO
267
The PKIXCertPathValidatorResult Class
267
The PKiXCertPathChecker Class
270
PKIXCertPathChecker.initO
270
PKIXCertPathChecker.isForwardCheckingSupportedO
271
PKIXCertPathChecker.getSupportedExtensionsO
271
PKIXCertPathChecker.checkO
271
Building a Valid Path from a CertStore
275
The CertPathBuilder Class
275
The PKIXBuilderParameters Class
275
Summary
278
Exercises
279
Chapter
8:
Key and Certificate Management Using
Keystores _
_281
Getting Started
281
The KeyStore Class
283
Keystore Types
284
Standard JDK Keystore Types
284
Bouncy Castle Keystore Types
284
The Basic KeyStore API
285
KeyStore. aliasesO
285
KeyStore.containsAliasO
285
KeyStore.deleteEntryO
285
KeyStore.getCertificateO
285
KeyStore.getCertificateAliasO
285
KeyStore.getCertificateChainO
286
KeyStore.getCreationDateO
286
KeyStore.getKeyO
286
KeyStore.getTypeO
286
KeyStore.isCertificateEntryO
286
KeyStore.isKeyEntryO
286
KeyStore.IoadO
286
KeyStore .setCertificateEntryO
287
KeyStore.setKeyEntryO
287
KeyStore.sizeO
287
KeyStore.store()
287
KeyStore
Nested Classes and Interfaces
290
The KeyStore.ProtectionParameter Interface
290
KeyStore.CallbackHandlerProtection
291
KeyStore.PasswordProtection
291
The KeyStore.Entry Interface
291
KeyStore.getEntryO
291
KeyStore.setEntryO
291
KeyStore.entrylnstanceOfO
292
KeyStore.
Pri
vate
Key Entry
292
KeyStore. SecretKey Entry
292
KeyStore.TrustedCertificateEntry
292
The KeyStore.Builder Class
295
KeyStore.Builder.getKeyStoreO
295
KeyStore.Builder.getProtectionParameterO
295
KeyStore.Builder.newlnstanceO
295
The KeyStore.LoadStoreParameter Interface
297
The PKCS
#12
Format
298
Using PKCS
#12
with the KeyStore API
300
The
Keytool 304
Keytool
Commands
304
General Command Options
304
Commands and Their Options
305
The JVM's CA Keystore
307
Some
Keytool
Experiments
308
Generating Some Sample Keystore Files
308
Jarsigning and Java Policy
312
The Jarsigner
312
Java Policy Files
312
Summary
313
Exercises
314
Q;
CMS and S/MIME
_315
Getting Started
315
Cryptographic Message Syntax
318
Basic CMS
318
The Data Content Type
319
The CMSProcessable Interface
320
CMS Signed-Data
320
ASN.l Structure
321
The DigestAlgorithms Field
322
The EncapContentlnfo Field
322
The Certificates and
Cris
Fields
322
The Signerlnfos Field
323
The Version Field
325
The Signerlnformation Class
325
Signerlnformation.getDigestAlgOIDO
325
Signerlnformation.getDigestAlgParamsO
325
Signerlnformation.getEncryptionAlgOIDO
326
Signerlnformation.getEncryptionAlgParamsO
326
Signerlnformation.getSIDO
326
Signerlnformation.getSignatureO
326
Signerlnformation.getSignedAtthbutesO
326
Signerlnformation.getUnsignedAttributesO
326
Signerlnformation.verifyO
326
Signerlnformation.replaceUnsignedAttributesO
327
The SignerlnformationStore Class
327
SignerlnformationStore.getQ
327
SignerlnformationStore .getSignersO
327
SignerlnformationStore. size()
327
The CMSSignedData Class
32/
CMSSignedData.getCertificatesAndCRLsO
328
CMSSignedData.getEncodedQ
328
CMSSignedData.getSignedContentO
328
CMSSignedData.getSignedContentOIDO
328
CMSSignedData.getSignerinfosO
328
CMSSignedData.replaceSignersO
328
CMS Enveloped-Data
332
ASN.l Structure
333
The Originatorlnfo Field
333
The Recipientlnfos Field
333
The EncryptedContentlnfo Field
334
The UnprotectedAttrs Field
335
The Version Field
335
The Recipientlnformation Class
335
Recipientlnformation.getContentO
336
Recipientlnformation.getKeyEncryptionAlgOIDO
336
Recipientlnformation.getKeyEncryptionAlgorithmParametersO
336
Recipientlnformation.getKeyEncryptionAlgParamsO
336
Recipientlnformation.getRIDO
336
The KeyTransRecipientlnformation Class
336
The RecipientlnformationStore Class
337
RecipientlnformationStore.getO
337
RecipientlnformationStore.getRecipientsO
337
RecipientlnformationStore. size()
337
The CMSEnvelopedData Class
337
CMSEnvelopedData.getEncodedO
338
CMSEnvelopedData.getEncryptionAlgOIDO
338
CMSEnvelopedData.getEncryptionAlgorithmParametersO
338
CMSEnvelopedData.getEncryptionAlgParamsO
338
CMSEnvelopedData.getRecipientlnfosO
338
CMSEnvelopedData.getUnprotectedAttributesO
338
The KEKRecipientlnformation Class
342
Data Compression in CMS
345
ASN.l Structure
345
The CMSCompressedData Class
345
CMSCompressedData.getContentO
345
CMSCompressedData.getEncodedQ
345
Secure/Multipurpose Internet Mail Extensions (S/MIME)
347
The CMSProcessableBodyPart Class
348
The SMIMEUtil Class
348
SMIMEUtil.toMimeBodyPartO
348
SMIMEUtil.createlssuerAndSerialNumberForO
348
S/MIME Signed Messages
348
The CMSProcessableBodyPartlnbound Class
349
The CMSProcessableBodyPartOutbound Class
349
The SMIMESigned Class
349
SMIMESigned.getContentQ
350
SMIMESigned.getContentAsMimeMessageO
350
SMIMESigned.getContentWithSignatureQ
350
S/MIME Enveloped Messages
354
The SMIMEEnveloped Class
355
Combining Signing with Encryption
357
S/MIME Compressed Messages
361
The SMIMECompressed Class
361
Summary
363
Exercises
364
10:
SSL
and TLS
_365
The SSL and TLS Protocols
365
Getting Started
366
A Basic SSL Client and Server
369
The SSLSocketFactory Class
370
SSLSocketFactory.createSocketO
370
SSLSocketFactory.getDefaultO
370
SSLSocketFactory.getDefaultCipherSuitesO
370
SSLSocketFactory.getSupportedCipherSuitesO
370
The SSLServerSocketFactory Class
370
SSLServerSocketFactory.createServerSocketO
371
SSLServerSocketFactory.getDefaultO
371
SSLServerSocketFactory.getDefaultCipherSuitesO and
SSLServerSocketFactory.getSupportedCipherSuitesO
371
The SSLSocket Class
371
SSLSocket.setEnabledCipherSuitesO
371
SSLSocket.setEnabledProtocolsO
372
SSLSocketsetEnableSessionCreationO
372
SSLSocket.setUseClientModeO
372
SSLSocket.startHandshakeO
372
The SSLServerSocket Class
373
SSLServerSocketsetEnabledCipherSuitesO
373
SSLServerSocket.setEnabledProtocolsO
373
SSLServerSocket.setEnableSessionCreationO
373
SSLServerSocket.setUseClientModeO
373
The HandshakeCompletedListener Interface
377
Client-Side Authentication
378
SSLServerSocket Configuration
379
SSLServerSocket.setNeedClientAuthO
379
SSLServerSocket.setWantClientAuthO
379
Server-Mode SSLSocket Configuration
379
The setNeedClientAuthO Method
379
The setWantClientAuthO Method
379
The SSLContext Class
379
SSLContext.initO 380
SSLContext.getClientSessionContextO
380
SSLContext.getProtocolO
380
SSLContext.getServerSessionContextO
381
SSLContext.getServerSocketFactoryO
381
SSLContext.getSocketFactoryO
381
The KeyManagerFactory Class
381
KeyManagerFactory.initO
381
KeyManagerFactory.getAlgorithmQ
382
KeyManagerFactory.getDefaultAlgorithmO
382
KeyManagerFactory.getKeyManagersQ
382
The TrustManagerFactory Class
386
TrustManagerFactory.initO
386
TrustManagerFactory.getAlgorithmO
386
TrustManagerFactory.getDefaultAlgorithmO
386
TrustManagerFactory.getTrustManagersO
387
Managing SSL Session Information
389
The SSLSession Interface
389
SSLSession.getCipherSuiteO
389
SSLSession.getCreationTimeO
389
SSLSession.getldO
390
SSLSession.getLastAccessedTimeO
390
SSLSession.getLocalCertificatesO
390
SSLSession.getLocalPrincipalO
390
SSLSession .getPeerCertif icatesf)
390
SSLSession.getPeerHostO
390
SSLSession.getPeerPortO
390
SSLSession.getPeerPrincipalO
390
SSLSession.getProtocolO
391
SSLSession.getSessionContextO
391
SSLSession.
invalidateţ)
391
SSLSession.isValidO
391
SSLSession.putValueO
391
Dealing with HTTPS
394
The HttpsURLConnection Class
394
HttpsURLConnection.getCipherSuiteO
395
HttpsURLConnection .getHostnameVerifierO
395
HttpsURLConnection.getLocalCertificatesO
395
HttpsURLConnection.getLocalPrincipalO
395
HttpsURLConnection.getPeerPrincipaiO
395
HttpsURLConnection.getServerCertificatesO
396
HttpsURLConnection.getSSLSocketFactoryO
396
HttpsURLConnection.setDefaultSSLSocketFactoryO
396
HttpsURLConnection.setDefaultHostnameVerifierO
396
The HostnameVerifier Interface
396
Summary
401
Exercises
402
A;
Solutions to Exercises
_403
Chapter
1
Solutions
403
Chapter
2
Solutions
403
Chapter
3
Solutions
404
Chapter
4
Solutions
405
Chapter
5
Solutions
406
Chapter
6
Solutions
407
Chapter
7
Solutions
408
Chapter
8
Solutions
409
Chapter
9
Solutions
412
Chapter
10
Solutions
415
Appendix B: Algorithms Provided by the Bouncy Castle Provider
_417
Asymmetric Ciphers
417
Certificate Path Validation
417
Key Agreement Algorithms
417
Key Stores
418
MAC Algorithms
418
Signature Algorithms
418
Message Digests
418
Symmetric Block Ciphers
418
Symmetric Stream Ciphers
419
Appendix C: Using the Bouncy Castle API for Elliptic Curve
_421
Elliptic Curve Interfaces
421
The ECKey Interface
421
The ECPrivateKey Interface
422
The ECPublicKey Interface
422
The ECPointEncoder Interface
422
Elliptic Curve Classes
422
The ECNamedCurveParameterSpec Class
422
The ECNamedCurveSpec Class
423
The ECParameterSpec Class
423
The ECPrivateKeySpec Class
423
The ECPublicKeySpec Class
423
Appendix D:
Bibliography and Further Reading
_425
ASN.l Standards
425
IETF Working Group Charter Pages
425
NIST Publications
426
PKCS Standards
426
RFCs
427
Other Useful Standards
428
Useful References
428
Useful Web Links
429
Index
431 |
any_adam_object | 1 |
any_adam_object_boolean | 1 |
author | Hook, David |
author_facet | Hook, David |
author_role | aut |
author_sort | Hook, David |
author_variant | d h dh |
building | Verbundindex |
bvnumber | BV021295552 |
callnumber-first | Q - Science |
callnumber-label | QA76 |
callnumber-raw | QA76.9.A25 |
callnumber-search | QA76.9.A25 |
callnumber-sort | QA 276.9 A25 |
callnumber-subject | QA - Mathematics |
classification_rvk | ST 276 |
ctrlnum | (OCoLC)728030732 (DE-599)BVBBV021295552 |
dewey-full | 005.8 |
dewey-hundreds | 000 - Computer science, information, general works |
dewey-ones | 005 - Computer programming, programs, data, security |
dewey-raw | 005.8 |
dewey-search | 005.8 |
dewey-sort | 15.8 |
dewey-tens | 000 - Computer science, information, general works |
discipline | Informatik |
discipline_str_mv | Informatik |
format | Book |
fullrecord | <?xml version="1.0" encoding="UTF-8"?><collection xmlns="http://www.loc.gov/MARC21/slim"><record><leader>01665nam a2200457zc 4500</leader><controlfield tag="001">BV021295552</controlfield><controlfield tag="003">DE-604</controlfield><controlfield tag="005">20060523 </controlfield><controlfield tag="007">t</controlfield><controlfield tag="008">060117s2005 xxud||| |||| 00||| eng d</controlfield><datafield tag="010" ind1=" " ind2=" "><subfield code="a">2005011272</subfield></datafield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">0764596330</subfield><subfield code="9">0-7645-9633-0</subfield></datafield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">9780764596339</subfield><subfield code="9">978-0-7645-9633-9</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(OCoLC)728030732</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(DE-599)BVBBV021295552</subfield></datafield><datafield tag="040" ind1=" " ind2=" "><subfield code="a">DE-604</subfield><subfield code="b">ger</subfield><subfield code="e">aacr</subfield></datafield><datafield tag="041" ind1="0" ind2=" "><subfield code="a">eng</subfield></datafield><datafield tag="044" ind1=" " ind2=" "><subfield code="a">xxu</subfield><subfield code="c">US</subfield></datafield><datafield tag="049" ind1=" " ind2=" "><subfield code="a">DE-1051</subfield><subfield code="a">DE-573</subfield><subfield code="a">DE-523</subfield><subfield code="a">DE-739</subfield><subfield code="a">DE-858</subfield></datafield><datafield tag="050" ind1=" " ind2="0"><subfield code="a">QA76.9.A25</subfield></datafield><datafield tag="082" ind1="0" ind2=" "><subfield code="a">005.8</subfield><subfield code="2">22</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">ST 276</subfield><subfield code="0">(DE-625)143642:</subfield><subfield code="2">rvk</subfield></datafield><datafield tag="100" ind1="1" ind2=" "><subfield code="a">Hook, David</subfield><subfield code="e">Verfasser</subfield><subfield code="4">aut</subfield></datafield><datafield tag="245" ind1="1" ind2="0"><subfield code="a">Beginning cryptography with Java</subfield><subfield code="c">David Hook</subfield></datafield><datafield tag="246" ind1="1" ind2="3"><subfield code="a">Cryptography with Java</subfield></datafield><datafield tag="264" ind1=" " ind2="1"><subfield code="a">Indianapolis, IN</subfield><subfield code="b">Wiley</subfield><subfield code="c">2005</subfield></datafield><datafield tag="300" ind1=" " ind2=" "><subfield code="a">XXXII, 448 S.</subfield><subfield code="b">graph. Darst.</subfield></datafield><datafield tag="336" ind1=" " ind2=" "><subfield code="b">txt</subfield><subfield code="2">rdacontent</subfield></datafield><datafield tag="337" ind1=" " ind2=" "><subfield code="b">n</subfield><subfield code="2">rdamedia</subfield></datafield><datafield tag="338" ind1=" " ind2=" "><subfield code="b">nc</subfield><subfield code="2">rdacarrier</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">Computer security</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">Cryptography</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">Java (Computer program language)</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">Public key infrastructure (Computer security)</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Java</subfield><subfield code="g">Programmiersprache</subfield><subfield code="0">(DE-588)4401313-9</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Kryptologie</subfield><subfield code="0">(DE-588)4033329-2</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="689" ind1="0" ind2="0"><subfield code="a">Kryptologie</subfield><subfield code="0">(DE-588)4033329-2</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2="1"><subfield code="a">Java</subfield><subfield code="g">Programmiersprache</subfield><subfield code="0">(DE-588)4401313-9</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2=" "><subfield code="5">DE-604</subfield></datafield><datafield tag="856" ind1="4" ind2="2"><subfield code="m">Digitalisierung UB Passau</subfield><subfield code="q">application/pdf</subfield><subfield code="u">http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=014616317&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA</subfield><subfield code="3">Inhaltsverzeichnis</subfield></datafield><datafield tag="999" ind1=" " ind2=" "><subfield code="a">oai:aleph.bib-bvb.de:BVB01-014616317</subfield></datafield></record></collection> |
id | DE-604.BV021295552 |
illustrated | Illustrated |
index_date | 2024-07-02T13:51:05Z |
indexdate | 2024-07-09T20:34:58Z |
institution | BVB |
isbn | 0764596330 9780764596339 |
language | English |
lccn | 2005011272 |
oai_aleph_id | oai:aleph.bib-bvb.de:BVB01-014616317 |
oclc_num | 728030732 |
open_access_boolean | |
owner | DE-1051 DE-573 DE-523 DE-739 DE-858 |
owner_facet | DE-1051 DE-573 DE-523 DE-739 DE-858 |
physical | XXXII, 448 S. graph. Darst. |
publishDate | 2005 |
publishDateSearch | 2005 |
publishDateSort | 2005 |
publisher | Wiley |
record_format | marc |
spelling | Hook, David Verfasser aut Beginning cryptography with Java David Hook Cryptography with Java Indianapolis, IN Wiley 2005 XXXII, 448 S. graph. Darst. txt rdacontent n rdamedia nc rdacarrier Computer security Cryptography Java (Computer program language) Public key infrastructure (Computer security) Java Programmiersprache (DE-588)4401313-9 gnd rswk-swf Kryptologie (DE-588)4033329-2 gnd rswk-swf Kryptologie (DE-588)4033329-2 s Java Programmiersprache (DE-588)4401313-9 s DE-604 Digitalisierung UB Passau application/pdf http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=014616317&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA Inhaltsverzeichnis |
spellingShingle | Hook, David Beginning cryptography with Java Computer security Cryptography Java (Computer program language) Public key infrastructure (Computer security) Java Programmiersprache (DE-588)4401313-9 gnd Kryptologie (DE-588)4033329-2 gnd |
subject_GND | (DE-588)4401313-9 (DE-588)4033329-2 |
title | Beginning cryptography with Java |
title_alt | Cryptography with Java |
title_auth | Beginning cryptography with Java |
title_exact_search | Beginning cryptography with Java |
title_exact_search_txtP | Beginning cryptography with Java |
title_full | Beginning cryptography with Java David Hook |
title_fullStr | Beginning cryptography with Java David Hook |
title_full_unstemmed | Beginning cryptography with Java David Hook |
title_short | Beginning cryptography with Java |
title_sort | beginning cryptography with java |
topic | Computer security Cryptography Java (Computer program language) Public key infrastructure (Computer security) Java Programmiersprache (DE-588)4401313-9 gnd Kryptologie (DE-588)4033329-2 gnd |
topic_facet | Computer security Cryptography Java (Computer program language) Public key infrastructure (Computer security) Java Programmiersprache Kryptologie |
url | http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=014616317&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |
work_keys_str_mv | AT hookdavid beginningcryptographywithjava AT hookdavid cryptographywithjava |