In Java generating public private key using RSA algorithm is quite easy as it provides lib to do these tasks. In Java java.security package contains classes to do these operation.
![]()
Generating public private key pairs
By using KeyPairGenerator class we can generate public/private key pairs as given below. It’s getInstance method takes algorithm name as input parameter(like “RSA, ”SHA1PRNG“ etc) and returns KeyPairGenerator object of that algorithm.
KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
kpg.initialize(1024);
KeyPair kp = kpg.genKeyPair();
// Get public Key object
Key publicKey = kp.getPublic();
// Get Private Key object
Key privateKey = kp.getPrivate();
Now you can store these keys by generating hex string value or byte string values and distribute public key for decryption.
Generating Hex/Byte string values of keys
You can generate HEX encodes string as given below for your keys.
byte[] publicKeyData = publicKey.getEncoded();
StringBuffer retString = new StringBuffer();
for (int i = 0; i < publicKeyData.length; ++i) {
retString.append(Integer.toHexString(0x0100 + (publicKeyData[i] & 0x00FF)).substring(1));
}
//Now you can distribute this public key string
System.out.println(retString);
For generating bytes in string you can use following code
byte[] publicKeyData = publicKey.getEncoded();
StringBuffer retString = new StringBuffer();
retString.append("[");
for (int i = 0; i < publicKeyData.length; ++i) {
retString.append(publicKeyData[i]);
retString.append(", ");
}
retString = retString.delete(retString.length()-2,retString.length());
retString.append("]");
System.out.println(retString);
Now using these key you can encrypt and decrypt your data.
