I want to generate 512 bit RSA keypair and then encode my public key as a string. How can I achieve this?
Generate RSA Key Pair We can easily do it by using the KeyPairGenerator from java. security package: KeyPairGenerator generator = KeyPairGenerator. getInstance("RSA"); generator.
Get the public key from the private key with ssh-keygen-y This option will read a private OpenSSH format file and print an OpenSSH public key to stdout. -f filename Specifies the filename of the key file.
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]
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With