Search code examples
javaencryptionrsa

Generate RSA key pair and encode public as string


I want to generate 512 bit RSA keypair and then encode my public key as a string. How can I achieve this?


Solution

  • For output as Hex-String

    import java.security.*;
    public class Test {
        public static void main(String[] args) throws NoSuchAlgorithmException, NoSuchProviderException {
            KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
            keyGen.initialize(512);
            byte[] publicKey = keyGen.genKeyPair().getPublic().getEncoded();
            StringBuffer retString = new StringBuffer();
            for (int i = 0; i < publicKey.length; ++i) {
                retString.append(Integer.toHexString(0x0100 + (publicKey[i] & 0x00FF)).substring(1));
            }
            System.out.println(retString);
        }
    }
    

    For output as byte values

    import java.security.*;
    public class Test {
        public static void main(String[] args) throws NoSuchAlgorithmException, NoSuchProviderException {
            KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
            keyGen.initialize(512);
            byte[] publicKey = keyGen.genKeyPair().getPublic().getEncoded();
            StringBuffer retString = new StringBuffer();
            retString.append("[");
            for (int i = 0; i < publicKey.length; ++i) {
                retString.append(publicKey[i]);
                retString.append(", ");
            }
            retString = retString.delete(retString.length()-2,retString.length());
            retString.append("]");
            System.out.println(retString); //e.g. [48, 92, 48, .... , 0, 1]
        }
    }