Saturday, September 6, 2025
HomeLanguagesJavaKeyFactory generatePrivate() method in Java with Examples

KeyFactory generatePrivate() method in Java with Examples

The generatePrivate() method of java.security.KeyPairGenerator class is used to generates a private key object from the provided key specification (key material).

Syntax:

public final PrivateKey generatePrivate(KeySpec keySpec)
                                 throws InvalidKeySpecException

Parameters: This method takes keySpec(the specification (key material) of the private key) as a parameter.

Return Value: This method returns the private key.

Exception: This method throws InvalidKeySpecException if the given key specification is inappropriate for this key factory to produce a private key.

Below are the examples to illustrate the generatePrivate() method

Note: The following program will not run on online IDE

Example 1:




// Java program to demonstrate
// generatePrivate() method
  
import java.security.*;
import java.util.*;
import java.security.spec.*;
  
public class GFG1 {
    public static void main(String[] argv) throws Exception
    {
        try {
  
            // creating the object of KeyPairGenerator
            KeyPairGenerator kpg = KeyPairGenerator
                                       .getInstance("DSA");
  
            // initializing with 1024
            kpg.initialize(1024);
  
            // getting key pairs
            // using generateKeyPair() method
            KeyPair kp = kpg.genKeyPair();
  
            // getting public key
            PrivateKey prv = kp.getPrivate();
  
            // getting byte data of private key
            byte[] private KeyBytes = prv.getEncoded();
  
            // creating keyspec object
            EncodedKeySpec
                private KeySpec
                = new PKCS8EncodedKeySpec(private KeyBytes);
  
            // creating object of keyfactory
            KeyFactory keyFactory = KeyFactory.getInstance("DSA");
  
            // generating private key from the provided key spec.
            // using generatePrivate() method
            PrivateKey private Key = keyFactory
                                        .generatePrivate(private KeySpec);
  
            // printing private key
            System.out.println("PrivateKey : " + private Key);
        }
  
        catch (NoSuchAlgorithmException e) {
  
            System.out.println("Exception thrown : " + e);
        }
        catch (ProviderException e) {
  
            System.out.println("Exception thrown : " + e);
        }
    }
}


Output:

PrivateKey : sun.security.provider.DSAPrivateKey@fff96ed9

Example 2: For InvalidKeySpecException




// Java program to demonstrate
// generatePrivate() method
  
import java.security.*;
import java.util.*;
import java.security.spec.*;
  
public class GFG1 {
    public static void main(String[] argv) throws Exception
    {
        try {
  
            // creating the object of KeyPairGenerator
            KeyPairGenerator kpg = KeyPairGenerator
                                       .getInstance("DSA");
  
            // initializing with 1024
            kpg.initialize(1024);
  
            // getting key pairs
            // using generateKeyPair() method
            KeyPair kp = kpg.genKeyPair();
  
            // getting public key
            PrivateKey prv = kp.getPrivate();
  
            // getting byte data of private key
            byte[] private KeyBytes = prv.getEncoded();
  
            // creating keyspec object
            EncodedKeySpec
                private KeySpec
                = new X509EncodedKeySpec(private KeyBytes);
  
            // creating object of keyfactory
            KeyFactory keyFactory = KeyFactory.getInstance("DSA");
  
            // generating private key from the provided key spec.
            // using generatePrivate() method
            PrivateKey private Key = keyFactory
                                        .generatePrivate(private KeySpec);
  
            // printing private key
            System.out.println("Private Key : " + private Key);
        }
  
        catch (NoSuchAlgorithmException e) {
  
            System.out.println("Exception thrown : " + e);
        }
        catch (ProviderException e) {
  
            System.out.println("Exception thrown : " + e);
        }
        catch (InvalidKeySpecException e) {
  
            System.out.println("Exception thrown : " + e);
        }
    }
}


Output:

Exception thrown : java.security.spec.InvalidKeySpecException:
 Inappropriate key specification
RELATED ARTICLES

Most Popular

Dominic
32269 POSTS0 COMMENTS
Milvus
81 POSTS0 COMMENTS
Nango Kala
6638 POSTS0 COMMENTS
Nicole Veronica
11802 POSTS0 COMMENTS
Nokonwaba Nkukhwana
11868 POSTS0 COMMENTS
Shaida Kate Naidoo
6752 POSTS0 COMMENTS
Ted Musemwa
7029 POSTS0 COMMENTS
Thapelo Manthata
6704 POSTS0 COMMENTS
Umr Jansen
6721 POSTS0 COMMENTS