Java Keyfactory To Generate Public Keys

gistfile1.java
importjava.security.KeyPairGenerator;
importjava.security.KeyPair;
importjava.security.PrivateKey;
importjava.security.PublicKey;
importjava.security.KeyFactory;
importjava.security.spec.EncodedKeySpec;
importjava.security.spec.PKCS8EncodedKeySpec;
importjava.security.spec.X509EncodedKeySpec;
importjava.security.spec.InvalidKeySpecException;
importjava.security.NoSuchAlgorithmException;
importcom.sun.jersey.core.util.Base64;
publicclassGeneratePublicPrivateKeys {
privatestaticvoidgenerateKeys(StringkeyAlgorithm, intnumBits) {
try {
// Get the public/private key pair
KeyPairGenerator keyGen =KeyPairGenerator.getInstance(keyAlgorithm);
keyGen.initialize(numBits);
KeyPair keyPair = keyGen.genKeyPair();
PrivateKey privateKey = keyPair.getPrivate();
PublicKey publicKey = keyPair.getPublic();
System.out.println('n'+'Generating key/value pair using '+ privateKey.getAlgorithm() +' algorithm');
// Get the bytes of the public and private keys
byte[] privateKeyBytes = privateKey.getEncoded();
byte[] publicKeyBytes = publicKey.getEncoded();
// Get the formats of the encoded bytes
String formatPrivate = privateKey.getFormat(); // PKCS#8
String formatPublic = publicKey.getFormat(); // X.509
System.out.println('Private Key : '+Base64.encode(String.valueOf(privateKeyBytes)));
System.out.println('Public Key : '+Base64.encode(String.valueOf(publicKeyBytes)));
// The bytes can be converted back to public and private key objects
KeyFactory keyFactory =KeyFactory.getInstance(keyAlgorithm);
EncodedKeySpec privateKeySpec =newPKCS8EncodedKeySpec(privateKeyBytes);
PrivateKey privateKey2 = keyFactory.generatePrivate(privateKeySpec);
EncodedKeySpec publicKeySpec =newX509EncodedKeySpec(publicKeyBytes);
PublicKey publicKey2 = keyFactory.generatePublic(publicKeySpec);
// The original and new keys are the same
System.out.println(' Are both private keys equal? '+ privateKey.equals(privateKey2));
System.out.println(' Are both public keys equal? '+ publicKey.equals(publicKey2));
} catch (InvalidKeySpecException specException) {
System.out.println('Exception');
System.out.println('Invalid Key Spec Exception');
} catch (NoSuchAlgorithmException e) {
System.out.println('Exception');
System.out.println('No such algorithm: '+ keyAlgorithm);
}
}
publicstaticvoidmain(String[] args) {
// Generate a 1024-bit Digital Signature Algorithm (DSA) key pair
generateKeys('DSA', 1024);
// Generate a 576-bit DH key pair
generateKeys('DH', 576);
// Generate a 1024-bit RSA key pair
generateKeys('RSA', 1024);
}
}

Generates classes to handle multi-valued keys, for use in things such as Maps and Sets. Code for equals and hashCode methods follow the the rules laid out in Effective Java by Joshua Bloch. Wolfram mathematica 8 activation key generator. To generate a KeyFactory, you need to supply an interface which describes the structure of the key.The interface should have a single method named newInstance, which returns an Object. Returns a KeyFactory object that converts public/private keys of the specified algorithm. This method traverses the list of registered security Providers, starting with the most preferred Provider. A new KeyFactory object encapsulating the KeyFactorySpi implementation from the first Provider that supports the specified algorithm is returned.

commented Mar 14, 2018

Hi

You post is interestnig , is there away I can create a privatre key instance via a signature given stiring?

I have pub/private keys generated already

KeyPairGenerator keyPairGenerator is going to createa key pair, but in my case I alrady have it and then further want to use them for signign.

e.g

//ecdsaSign.initSign(keyPair.getPrivate());
byte[] pkInfo = '51114cac71a9575bc1b39104d176a39d81bd1a705b9a1ad32efd2222f13e59ad'.getBytes();
// PrivateKey pvtKey = DSAPrivateKey <<<<< create a private key here via above string. instead of keyPair created above.
ecdsaSign.initSign(pvtKey);
//byte[] publicKeyBytes = keyPair.getPublic().getEncoded();
byte[] publicKeyBytes = '025fe2d166a5a8ff005eb0c799a474174f5d061de266438c69d36c2032c6bff51a'.getBytes();

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment
  • Java Cryptography Tutorial
  • Message Digest and MAC
  • Keys and Key Store
  • Generating Keys
  • Digital Signature
  • Cipher Text
  • Java Cryptography Resources
  • Selected Reading

Java Keyfactory To Generate Public Keys Free


Java provides KeyGenerator class this class is used to generate secret keys and objects of this class are reusable.

To generate keys using the KeyGenerator class follow the steps given below.

Step 1: Create a KeyGenerator object

Java Keyfactory To Generate Public Keys Free

The KeyGenerator class provides getInstance() method which accepts a String variable representing the required key-generating algorithm and returns a KeyGenerator object that generates secret keys.

Create KeyGenerator object using the getInstance() method as shown below.

Step 2: Create SecureRandom object

The SecureRandom class of the java.Security package provides a strong random number generator which is used to generate random numbers in Java. Instantiate this class as shown below. /cydia-key-generator-no-survey.html.

Step 3: Initialize the KeyGenerator

The KeyGenerator class provides a method named init() this method accepts the SecureRandom object and initializes the current KeyGenerator.

Initialize the KeyGenerator object created in the previous step using the init() method.

Example

Java Keyfactory To Generate Public Keys 2017

Following example demonstrates the key generation of the secret key using the KeyGenerator class of the javax.crypto package.

Output

Java Keyfactory To Generate Public Keys Download

The above program generates the following output −