A simple program to generate 1024 bit RSA key pair, and perform simple encryption and decryption. No a big deal. Two classes: AsymetricKeyHelper and Main.
AsymmetricKeyHelper.java:
/*AsymmetricKeyHelper.java*/
package com.work.crypto;
import java.security.InvalidKeyException;
import java.security.Key;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.PrivateKey;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
public class AsymmetricKeyHelper {
//Generates an RSA public private key pair
public KeyPair keyPair() {
KeyPair kp = null;
try {
KeyPairGenerator keyPairGenerator = KeyPairGenerator
.getInstance("RSA");
keyPairGenerator.initialize(1024);
kp = keyPairGenerator.generateKeyPair();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return kp;
}
//does the encryption
public byte[] encrypt(byte[] clearTest, Key key) {
try {
Cipher cipher = Cipher.getInstance(key.getAlgorithm());
cipher.init(Cipher.ENCRYPT_MODE, key);
return cipher.doFinal(clearTest);
} catch (InvalidKeyException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (NoSuchPaddingException e) {
e.printStackTrace();
} catch (IllegalBlockSizeException e) {
e.printStackTrace();
} catch (BadPaddingException e) {
e.printStackTrace();
}
return null;
}
//does the decryption
public byte[] decrypt(byte[] cipherText, PrivateKey private1) {
try {
Cipher cipher;
System.out.println(private1.getAlgorithm());
cipher = Cipher.getInstance(private1.getAlgorithm());
cipher.init(Cipher.DECRYPT_MODE, private1);
return cipher.doFinal(cipherText);
} catch (NoSuchAlgorithmException e1) {
e1.printStackTrace();
} catch (NoSuchPaddingException e1) {
e1.printStackTrace();
} catch (InvalidKeyException e) {
e.printStackTrace();
} catch (IllegalBlockSizeException e) {
e.printStackTrace();
} catch (BadPaddingException e) {
e.printStackTrace();
}
return null;
}
}
Main.java:
/*Main.java*/
package com.work.crypto;
import java.security.KeyPair;
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
asymmetricEncryptionSimple();
}
private static void asymmetricEncryptionSimple() {
AsymmetricKeyHelper keyHelper = new AsymmetricKeyHelper();
KeyPair keyPair = keyHelper.keyPair();
System.out.println(keyPair.getPublic().getAlgorithm());
String plainText = "You little Monkey.I am a cryptographer";
byte[] cipherText = keyHelper.encrypt(plainText.getBytes(), keyPair.getPublic());
//Print the encrypted text, it is in binary. So it will look ugly.
System.out.println(new String(cipherText));
byte[] clearDecrypt = keyHelper.decrypt(cipherText, keyPair.getPrivate());
//Create a string out of the byte array
System.out.println(new String(clearDecrypt));
}
}
No comments:
Post a Comment