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