<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_Tutorial%2FSecurity%2FKeyPairGenerator</id>
		<title>Java Tutorial/Security/KeyPairGenerator - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_Tutorial%2FSecurity%2FKeyPairGenerator"/>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_Tutorial/Security/KeyPairGenerator&amp;action=history"/>
		<updated>2026-04-23T15:59:16Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java_Tutorial/Security/KeyPairGenerator&amp;diff=4286&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_Tutorial/Security/KeyPairGenerator&amp;diff=4286&amp;oldid=prev"/>
				<updated>2010-06-01T05:01:21Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 05:01, 1 июня 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java_Tutorial/Security/KeyPairGenerator&amp;diff=4285&amp;oldid=prev</id>
		<title> в 17:44, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_Tutorial/Security/KeyPairGenerator&amp;diff=4285&amp;oldid=prev"/>
				<updated>2010-05-31T17:44:27Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==  Adding Extensions to a Certification Request ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.io.OutputStreamWriter;&lt;br /&gt;
import java.security.KeyPair;&lt;br /&gt;
import java.security.KeyPairGenerator;&lt;br /&gt;
import java.security.SecureRandom;&lt;br /&gt;
import java.security.Security;&lt;br /&gt;
import java.util.Vector;&lt;br /&gt;
import javax.security.auth.x500.X500Principal;&lt;br /&gt;
import org.bouncycastle.asn1.DEROctetString;&lt;br /&gt;
import org.bouncycastle.asn1.DERSet;&lt;br /&gt;
import org.bouncycastle.asn1.pkcs.Attribute;&lt;br /&gt;
import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;&lt;br /&gt;
import org.bouncycastle.asn1.x509.GeneralName;&lt;br /&gt;
import org.bouncycastle.asn1.x509.GeneralNames;&lt;br /&gt;
import org.bouncycastle.asn1.x509.X509Extension;&lt;br /&gt;
import org.bouncycastle.asn1.x509.X509Extensions;&lt;br /&gt;
import org.bouncycastle.jce.PKCS10CertificationRequest;&lt;br /&gt;
import org.bouncycastle.openssl.PEMWriter;&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  public static PKCS10CertificationRequest generateRequest(KeyPair pair) throws Exception {&lt;br /&gt;
    GeneralNames subjectAltName = new GeneralNames(new GeneralName(GeneralName.rfc822Name,&lt;br /&gt;
        &amp;quot;test@test.test&amp;quot;));&lt;br /&gt;
    Vector oids = new Vector();&lt;br /&gt;
    Vector values = new Vector();&lt;br /&gt;
    oids.add(X509Extensions.SubjectAlternativeName);&lt;br /&gt;
    values.add(new X509Extension(false, new DEROctetString(subjectAltName)));&lt;br /&gt;
    X509Extensions extensions = new X509Extensions(oids, values);&lt;br /&gt;
    Attribute attribute = new Attribute(PKCSObjectIdentifiers.pkcs_9_at_extensionRequest,&lt;br /&gt;
        new DERSet(extensions));&lt;br /&gt;
    return new PKCS10CertificationRequest(&amp;quot;SHA256withRSA&amp;quot;, new X500Principal(&lt;br /&gt;
        &amp;quot;CN=Requested Test Certificate&amp;quot;), pair.getPublic(), new DERSet(attribute), pair&lt;br /&gt;
        .getPrivate());&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) throws Exception {&lt;br /&gt;
    Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());&lt;br /&gt;
    KeyPairGenerator kpGen = KeyPairGenerator.getInstance(&amp;quot;RSA&amp;quot;, &amp;quot;BC&amp;quot;);&lt;br /&gt;
    kpGen.initialize(1024, new SecureRandom());&lt;br /&gt;
    KeyPair pair = kpGen.generateKeyPair();&lt;br /&gt;
    PKCS10CertificationRequest request = generateRequest(pair);&lt;br /&gt;
    PEMWriter pemWrt = new PEMWriter(new OutputStreamWriter(System.out));&lt;br /&gt;
    pemWrt.writeObject(request);&lt;br /&gt;
    pemWrt.close();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
/*-----BEGIN CERTIFICATE REQUEST-----&lt;br /&gt;
MIIBkDCB+gIBADAlMSMwIQYDVQQDExpSZXF1ZXN0ZWQgVGVzdCBDZXJ0aWZpY2F0&lt;br /&gt;
ZTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEArbtf7LlFX+hg/kYX0a6dLmLW&lt;br /&gt;
UHHpiHH6UW4CF0X240kAsThW8xpFe+rHMDW0NlpHCotQ6NVAJqNm+y6FInvu0+fO&lt;br /&gt;
4tq4GKJVw0ewEL//IsD+1lBWBDSmeUq3P2ONRDft7gyW5R3NAja3ihoTJaSd3SWZ&lt;br /&gt;
GBdhFZdx75WsomPMmtkCAwEAAaAsMCoGCSqGSIb3DQEJDjEdMBswGQYDVR0RBBIw&lt;br /&gt;
EIEOdGVzdEB0ZXN0LnRlc3QwDQYJKoZIhvcNAQELBQADgYEAbDa0nbtl57NDYyc8&lt;br /&gt;
yxuXLrDNrcG9qaDXR9bcWsvk6dR9zg1aTr9KtBT8iKoS41xW25ndRN/xH0ft2oWN&lt;br /&gt;
UzD4ADDUu48Jtc9lk52ei44w4u2pQk4BhY1lgO8eZY9y4SCuT6C28mqxNZ4Jq8lb&lt;br /&gt;
wQzxBmdTgd8873ebGdi5ZdpIlMI=&lt;br /&gt;
-----END CERTIFICATE REQUEST-----&lt;br /&gt;
*/&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Asymmetric Key Maker ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.security.KeyPair;&lt;br /&gt;
import java.security.KeyPairGenerator;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] args) throws Exception {&lt;br /&gt;
    String algorithm = &amp;quot;&amp;quot;;&lt;br /&gt;
    KeyPair keyPair = KeyPairGenerator.getInstance(algorithm).generateKeyPair();&lt;br /&gt;
    System.out.println(keyPair.getPublic());&lt;br /&gt;
    System.out.println(keyPair.getPrivate());&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Creating a Certificate from a Certification Request ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.io.OutputStreamWriter;&lt;br /&gt;
import java.math.BigInteger;&lt;br /&gt;
import java.security.InvalidKeyException;&lt;br /&gt;
import java.security.KeyPair;&lt;br /&gt;
import java.security.KeyPairGenerator;&lt;br /&gt;
import java.security.NoSuchProviderException;&lt;br /&gt;
import java.security.SecureRandom;&lt;br /&gt;
import java.security.Security;&lt;br /&gt;
import java.security.SignatureException;&lt;br /&gt;
import java.security.cert.X509Certificate;&lt;br /&gt;
import java.util.Date;&lt;br /&gt;
import java.util.Enumeration;&lt;br /&gt;
import javax.security.auth.x500.X500Principal;&lt;br /&gt;
import org.bouncycastle.asn1.ASN1Set;&lt;br /&gt;
import org.bouncycastle.asn1.DERObjectIdentifier;&lt;br /&gt;
import org.bouncycastle.asn1.pkcs.Attribute;&lt;br /&gt;
import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;&lt;br /&gt;
import org.bouncycastle.asn1.x509.BasicConstraints;&lt;br /&gt;
import org.bouncycastle.asn1.x509.ExtendedKeyUsage;&lt;br /&gt;
import org.bouncycastle.asn1.x509.KeyPurposeId;&lt;br /&gt;
import org.bouncycastle.asn1.x509.KeyUsage;&lt;br /&gt;
import org.bouncycastle.asn1.x509.X509Extension;&lt;br /&gt;
import org.bouncycastle.asn1.x509.X509Extensions;&lt;br /&gt;
import org.bouncycastle.jce.PKCS10CertificationRequest;&lt;br /&gt;
import org.bouncycastle.openssl.PEMWriter;&lt;br /&gt;
import org.bouncycastle.x509.X509V1CertificateGenerator;&lt;br /&gt;
import org.bouncycastle.x509.X509V3CertificateGenerator;&lt;br /&gt;
import org.bouncycastle.x509.extension.AuthorityKeyIdentifierStructure;&lt;br /&gt;
import org.bouncycastle.x509.extension.SubjectKeyIdentifierStructure;&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  public static KeyPair generateRSAKeyPair() throws Exception {&lt;br /&gt;
    KeyPairGenerator kpGen = KeyPairGenerator.getInstance(&amp;quot;RSA&amp;quot;, &amp;quot;BC&amp;quot;);&lt;br /&gt;
    kpGen.initialize(1024, new SecureRandom());&lt;br /&gt;
    return kpGen.generateKeyPair();&lt;br /&gt;
  }&lt;br /&gt;
  public static PKCS10CertificationRequest generateRequest(KeyPair pair) throws Exception {&lt;br /&gt;
    return new PKCS10CertificationRequest(&amp;quot;SHA256withRSA&amp;quot;, new X500Principal(&lt;br /&gt;
        &amp;quot;CN=Requested Test Certificate&amp;quot;), pair.getPublic(), null, pair.getPrivate());&lt;br /&gt;
  }&lt;br /&gt;
  public static X509Certificate generateV1Certificate(KeyPair pair) throws InvalidKeyException,&lt;br /&gt;
      NoSuchProviderException, SignatureException {&lt;br /&gt;
    Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());&lt;br /&gt;
    X509V1CertificateGenerator certGen = new X509V1CertificateGenerator();&lt;br /&gt;
    certGen.setSerialNumber(BigInteger.valueOf(System.currentTimeMillis()));&lt;br /&gt;
    certGen.setIssuerDN(new X500Principal(&amp;quot;CN=Test Certificate&amp;quot;));&lt;br /&gt;
    certGen.setNotBefore(new Date(System.currentTimeMillis() - 10000));&lt;br /&gt;
    certGen.setNotAfter(new Date(System.currentTimeMillis() + 10000));&lt;br /&gt;
    certGen.setSubjectDN(new X500Principal(&amp;quot;CN=Test Certificate&amp;quot;));&lt;br /&gt;
    certGen.setPublicKey(pair.getPublic());&lt;br /&gt;
    certGen.setSignatureAlgorithm(&amp;quot;SHA256WithRSAEncryption&amp;quot;);&lt;br /&gt;
    return certGen.generateX509Certificate(pair.getPrivate(), &amp;quot;BC&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  public static X509Certificate[] buildChain() throws Exception {&lt;br /&gt;
    KeyPair pair = generateRSAKeyPair();&lt;br /&gt;
    PKCS10CertificationRequest request = generateRequest(pair);&lt;br /&gt;
    KeyPair rootPair = generateRSAKeyPair();&lt;br /&gt;
    X509Certificate rootCert = generateV1Certificate(rootPair);&lt;br /&gt;
    X509V3CertificateGenerator certGen = new X509V3CertificateGenerator();&lt;br /&gt;
    certGen.setSerialNumber(BigInteger.valueOf(System.currentTimeMillis()));&lt;br /&gt;
    certGen.setIssuerDN(rootCert.getSubjectX500Principal());&lt;br /&gt;
    certGen.setNotBefore(new Date(System.currentTimeMillis()));&lt;br /&gt;
    certGen.setNotAfter(new Date(System.currentTimeMillis() + 10000));&lt;br /&gt;
    certGen.setSubjectDN(request.getCertificationRequestInfo().getSubject());&lt;br /&gt;
    certGen.setPublicKey(request.getPublicKey(&amp;quot;BC&amp;quot;));&lt;br /&gt;
    certGen.setSignatureAlgorithm(&amp;quot;SHA256WithRSAEncryption&amp;quot;);&lt;br /&gt;
    certGen.addExtension(X509Extensions.AuthorityKeyIdentifier, false,&lt;br /&gt;
        new AuthorityKeyIdentifierStructure(rootCert));&lt;br /&gt;
    certGen.addExtension(X509Extensions.SubjectKeyIdentifier,&lt;br /&gt;
    false, new SubjectKeyIdentifierStructure(request.getPublicKey(&amp;quot;BC&amp;quot;)));&lt;br /&gt;
    certGen.addExtension(X509Extensions.BasicConstraints, true, new BasicConstraints(false));&lt;br /&gt;
    certGen.addExtension(X509Extensions.KeyUsage, true, new KeyUsage(KeyUsage.digitalSignature&lt;br /&gt;
        | KeyUsage.keyEncipherment));&lt;br /&gt;
    certGen.addExtension(X509Extensions.ExtendedKeyUsage, true, new ExtendedKeyUsage(&lt;br /&gt;
        KeyPurposeId.id_kp_serverAuth));&lt;br /&gt;
    ASN1Set attributes = request.getCertificationRequestInfo().getAttributes();&lt;br /&gt;
    for (int i = 0; i != attributes.size(); i++) {&lt;br /&gt;
      Attribute attr = Attribute.getInstance(attributes.getObjectAt(i));&lt;br /&gt;
      if (attr.getAttrType().equals(PKCSObjectIdentifiers.pkcs_9_at_extensionRequest)) {&lt;br /&gt;
        X509Extensions extensions = X509Extensions.getInstance(attr.getAttrValues().getObjectAt(0));&lt;br /&gt;
        Enumeration e = extensions.oids();&lt;br /&gt;
        while (e.hasMoreElements()) {&lt;br /&gt;
          DERObjectIdentifier oid = (DERObjectIdentifier) e.nextElement();&lt;br /&gt;
          X509Extension ext = extensions.getExtension(oid);&lt;br /&gt;
          certGen.addExtension(oid, ext.isCritical(), ext.getValue().getOctets());&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    X509Certificate issuedCert = certGen.generateX509Certificate(rootPair.getPrivate());&lt;br /&gt;
    return new X509Certificate[] { issuedCert, rootCert };&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) throws Exception {&lt;br /&gt;
    Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());&lt;br /&gt;
    X509Certificate[] chain = buildChain();&lt;br /&gt;
    PEMWriter pemWrt = new PEMWriter(new OutputStreamWriter(System.out));&lt;br /&gt;
    pemWrt.writeObject(chain[0]);&lt;br /&gt;
    pemWrt.writeObject(chain[1]);&lt;br /&gt;
    pemWrt.close();&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Creating a Certification Request ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.io.OutputStreamWriter;&lt;br /&gt;
import java.security.KeyPair;&lt;br /&gt;
import java.security.KeyPairGenerator;&lt;br /&gt;
import java.security.SecureRandom;&lt;br /&gt;
import java.security.Security;&lt;br /&gt;
import javax.security.auth.x500.X500Principal;&lt;br /&gt;
import org.bouncycastle.jce.PKCS10CertificationRequest;&lt;br /&gt;
import org.bouncycastle.openssl.PEMWriter;&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  public static PKCS10CertificationRequest generateRequest(KeyPair pair) throws Exception {&lt;br /&gt;
    return new PKCS10CertificationRequest(&amp;quot;SHA256withRSA&amp;quot;, new X500Principal(&lt;br /&gt;
        &amp;quot;CN=Requested Test Certificate&amp;quot;), pair.getPublic(), null, pair.getPrivate());&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) throws Exception {&lt;br /&gt;
    Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());&lt;br /&gt;
    KeyPairGenerator kpGen = KeyPairGenerator.getInstance(&amp;quot;RSA&amp;quot;, &amp;quot;BC&amp;quot;);&lt;br /&gt;
    kpGen.initialize(1024, new SecureRandom());&lt;br /&gt;
    KeyPair pair = kpGen.generateKeyPair();&lt;br /&gt;
    PKCS10CertificationRequest request = generateRequest(pair);&lt;br /&gt;
    PEMWriter pemWrt = new PEMWriter(new OutputStreamWriter(System.out));&lt;br /&gt;
    pemWrt.writeObject(request);&lt;br /&gt;
    pemWrt.close();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
/*-----BEGIN CERTIFICATE REQUEST-----&lt;br /&gt;
MIIBYjCBzAIBADAlMSMwIQYDVQQDExpSZXF1ZXN0ZWQgVGVzdCBDZXJ0aWZpY2F0&lt;br /&gt;
ZTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAnIGtHELGBMJe9LUTDfMktFOG&lt;br /&gt;
2mlu9QKuCqpOB3lwsOg1AK4MkD+Bez6KVSOASvbjWCqqdmHAJsGWcpUpjJqm4tfg&lt;br /&gt;
r9KGSjDN4LJzR6cd0RZTHWzgud9t7peUBlowVZVJen0962wx6AeYNr8RG9jbcBPe&lt;br /&gt;
Ma4mbA3EeWvmZCo4aQcCAwEAATANBgkqhkiG9w0BAQsFAAOBgQCPRr5QBLH0Zfz5&lt;br /&gt;
j+MUO7NN+vZMu0bPxQiiZEAWiSbJ63Zp6UK6TV8SYTxjmSGS27KILY+oSHR7lSz0&lt;br /&gt;
XNEkLSCuJRRdtAF0GSz7MmSWFt8mwMr0i0ntbSWDVpZShH3pRi/8E+J3KnqT+Cs5&lt;br /&gt;
oVhUVFYBLncrinDPgDzVR98CapCI6g==&lt;br /&gt;
-----END CERTIFICATE REQUEST-----*/&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Generate a 576-bit DH key pair ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.security.KeyPair;&lt;br /&gt;
import java.security.KeyPairGenerator;&lt;br /&gt;
import java.security.PrivateKey;&lt;br /&gt;
import java.security.PublicKey;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) throws Exception {&lt;br /&gt;
    KeyPairGenerator keyGen = KeyPairGenerator.getInstance(&amp;quot;DH&amp;quot;);&lt;br /&gt;
    keyGen.initialize(576);&lt;br /&gt;
    KeyPair keypair = keyGen.genKeyPair();&lt;br /&gt;
    PrivateKey privateKey = keypair.getPrivate();&lt;br /&gt;
    PublicKey publicKey = keypair.getPublic();&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Generating a Public/Private Key Pair ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.security.KeyPair;&lt;br /&gt;
import java.security.KeyPairGenerator;&lt;br /&gt;
import java.security.PrivateKey;&lt;br /&gt;
import java.security.PublicKey;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) throws Exception {&lt;br /&gt;
    // Generate a 1024-bit Digital Signature Algorithm (DSA) key pair&lt;br /&gt;
    KeyPairGenerator keyGen = KeyPairGenerator.getInstance(&amp;quot;DSA&amp;quot;);&lt;br /&gt;
    keyGen.initialize(1024);&lt;br /&gt;
    KeyPair keypair = keyGen.genKeyPair();&lt;br /&gt;
    PrivateKey privateKey = keypair.getPrivate();&lt;br /&gt;
    System.out.println(privateKey);&lt;br /&gt;
    PublicKey publicKey = keypair.getPublic();&lt;br /&gt;
    System.out.println(publicKey);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Getting the Bytes of a Generated Key Pair ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.security.KeyPair;&lt;br /&gt;
import java.security.KeyPairGenerator;&lt;br /&gt;
import java.security.PrivateKey;&lt;br /&gt;
import java.security.PublicKey;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) throws Exception {&lt;br /&gt;
    String algorithm = &amp;quot;DSA&amp;quot;; // or RSA, DH, etc.&lt;br /&gt;
    // Generate a 1024-bit Digital Signature Algorithm (DSA) key pair&lt;br /&gt;
    KeyPairGenerator keyGen = KeyPairGenerator.getInstance(algorithm);&lt;br /&gt;
    keyGen.initialize(1024);&lt;br /&gt;
    KeyPair keypair = keyGen.genKeyPair();&lt;br /&gt;
    PrivateKey privateKey = keypair.getPrivate();&lt;br /&gt;
    PublicKey publicKey = keypair.getPublic();&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  The bytes can be converted back to public and private key objects ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.security.KeyFactory;&lt;br /&gt;
import java.security.KeyPair;&lt;br /&gt;
import java.security.KeyPairGenerator;&lt;br /&gt;
import java.security.PrivateKey;&lt;br /&gt;
import java.security.PublicKey;&lt;br /&gt;
import java.security.spec.EncodedKeySpec;&lt;br /&gt;
import java.security.spec.PKCS8EncodedKeySpec;&lt;br /&gt;
import java.security.spec.X509EncodedKeySpec;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) throws Exception {&lt;br /&gt;
    String algorithm = &amp;quot;DSA&amp;quot;; // or RSA, DH, etc.&lt;br /&gt;
    // Generate a 1024-bit Digital Signature Algorithm (DSA) key pair&lt;br /&gt;
    KeyPairGenerator keyGen = KeyPairGenerator.getInstance(algorithm);&lt;br /&gt;
    keyGen.initialize(1024);&lt;br /&gt;
    KeyPair keypair = keyGen.genKeyPair();&lt;br /&gt;
    PrivateKey privateKey = keypair.getPrivate();&lt;br /&gt;
    PublicKey publicKey = keypair.getPublic();&lt;br /&gt;
    byte[] privateKeyBytes = privateKey.getEncoded();&lt;br /&gt;
    byte[] publicKeyBytes = publicKey.getEncoded();&lt;br /&gt;
    &lt;br /&gt;
    KeyFactory keyFactory = KeyFactory.getInstance(algorithm);&lt;br /&gt;
    EncodedKeySpec privateKeySpec = new PKCS8EncodedKeySpec(privateKeyBytes);&lt;br /&gt;
    PrivateKey privateKey2 = keyFactory.generatePrivate(privateKeySpec);&lt;br /&gt;
    EncodedKeySpec publicKeySpec = new X509EncodedKeySpec(publicKeyBytes);&lt;br /&gt;
    PublicKey publicKey2 = keyFactory.generatePublic(publicKeySpec);&lt;br /&gt;
    // The orginal and new keys are the same&lt;br /&gt;
    boolean same = privateKey.equals(privateKey2); &lt;br /&gt;
    same = publicKey.equals(publicKey2); &lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;/div&gt;</summary>
			</entry>

	</feed>