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.