JDK Tutorials - Herong's Tutorial Examples - v6.32, by Herong Yang
DSA Private Key and Public Key Pair Sample
This section provides a tutorial example on how to run JcaKeyPair.java to generate a DSA private key and public key pair sample. Keys are stored PKCS#8 and X.509 encoding formats.
Here is the result of my first test of JcaKeyPair.java - generating a pair of DSA private key and public key.
herong> javac JcaKeyPair.java herong> java JcaKeyPair 512 dsa dsa KeyPairGenerator Object Info: Algorithm = DSA Provider = SUN version 10 Key Size = 512 toString = sun.security.provider.DSAKeyPairGenerator$Current@6a5fc7f7 Private Key Info: Algorithm = DSA Saved File = dsa.pri Size = 202 Format = PKCS#8 toString = sun.security.provider.DSAPrivateKey@23d27 Public Key Info: Algorithm = DSA Saved File = dsa.pub Size = 243 Format = X.509 toString = Sun DSA Public Key Parameters: p: fca682ce 8e12caba 26efccf7 110e526d b078b05e decbcd1e b4a208f3 ae1617ae 01f35b91 a47e6df6 3413c5e1 2ed0899b cd132acd 50d99151 bdc43ee7 37592e17 q: 962eddcc 369cba8e bb260ee6 b6a126d9 346e38c5 g: 678471b2 7a9cf44e e91a49c5 147db1a9 aaf244f0 5a434d64 86931d2d 14271b9e 35030b71 fd73da17 9069b32e 2935630e 1c206235 4d0da20a 6c416e50 be794ca4 y: b5c76bec 0ef39fe3 8b70172f 2d019656 bbc685c6 719813a8 1c55ab60 a6d7cd8f fee96d24 5253b4c7 2e56b5e9 6ab9a2f2 8c440f10 4e053e14 c6b9a693 72942472
The program seems to be working:
In order to see the keys, I need to use my other program, HexWriter.java, to convert binary data to hex numbers. See chapter "Encoding Conversion" for details.
Here is how to look at DSA key files in hex numbers, 16 bytes per line:
herong> javac HexWriter.java herong> java HexWriter dsa.pri dsa_pri.hex herong> more dsa_pri.hex 3081C60201003081A806072A8648CE38 040130819C024100FCA682CE8E12CABA 26EFCCF7110E526DB078B05EDECBCD1E B4A208F3AE1617AE01F35B91A47E6DF6 3413C5E12ED0899BCD132ACD50D99151 BDC43EE737592E17021500962EDDCC36 9CBA8EBB260EE6B6A126D9346E38C502 40678471B27A9CF44EE91A49C5147DB1 A9AAF244F05A434D6486931D2D14271B 9E35030B71FD73DA179069B32E293563 0E1C2062354D0DA20A6C416E50BE794C A4041602143FFB34A2B13206A69B3CE9 4C1B8AF6D4A259DE00 herong> java -cp . HexWriter dsa.pub dsa_pub.hex herong> more dsa_pub.hex 3081F13081A806072A8648CE38040130 819C024100FCA682CE8E12CABA26EFCC F7110E526DB078B05EDECBCD1EB4A208 F3AE1617AE01F35B91A47E6DF63413C5 E12ED0899BCD132ACD50D99151BDC43E E737592E17021500962EDDCC369CBA8E BB260EE6B6A126D9346E38C502406784 71B27A9CF44EE91A49C5147DB1A9AAF2 44F05A434D6486931D2D14271B9E3503 0B71FD73DA179069B32E2935630E1C20 62354D0DA20A6C416E50BE794CA40344 00024100B5C76BEC0EF39FE38B70172F 2D019656BBC685C6719813A81C55AB60 A6D7CD8FFEE96D245253B4C72E56B5E9 6AB9A2F28C440F104E053E14C6B9A693 72942472
Table of Contents
Date, Time and Calendar Classes
Date and Time Object and String Conversion
Number Object and Numeric String Conversion
Locales, Localization Methods and Resource Bundles
Calling and Importing Classes Defined in Unnamed Packages
HashSet, Vector, HashMap and Collection Classes
Character Set Encoding Classes and Methods
Encoding Conversion Programs for Encoded Text Files
Datagram Network Communication
DOM (Document Object Model) - API for XML Files
DTD (Document Type Definition) - XML Validation
XSD (XML Schema Definition) - XML Validation
XSL (Extensible Stylesheet Language)
Message Digest Algorithm Implementations in JDK
►Private key and Public Key Pair Generation
Private and Public Keys and Related Interfaces
KeyPair and KeyPairGenerator Classes
Key Pair Sample Program - JcaKeyPair.java
►DSA Private Key and Public Key Pair Sample
RSA Private Key and Public Key Pair Sample
DiffieHellman Private Key and Public Key Pair Sample
PKCS#8/X.509 Private/Public Encoding Standards
Digital Signature Algorithm and Sample Program
"keytool" Commands and "keystore" Files
KeyStore and Certificate Classes
Secret Key Generation and Management
Cipher - Encryption and Decryption
The SSL (Secure Socket Layer) Protocol
SSL Socket Communication Testing Programs