import java.io.*;
import java.security.*;
import javax.crypto.*;

public class RSA
{
	public static void main(String[] args) throws Exception
	{
		KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
		keyGen.initialize(1024);
		KeyPair pair = keyGen.generateKeyPair();
		PrivateKey prv = pair.getPrivate();
		PublicKey pub = pair.getPublic();
		
		Cipher cipher = Cipher.getInstance("RSA");
		cipher.init(Cipher.ENCRYPT_MODE, pub);
		
		String plaintext = " York University";
		byte[] ciphertext = cipher.doFinal(plaintext.getBytes());
		System.out.println(new String(ciphertext));
		
		cipher.init(Cipher.DECRYPT_MODE, prv);
		String decrypted = new String(cipher.doFinal(ciphertext));
		System.out.println(decrypted);
		
		ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("pub.bin"));
		oos.writeObject(pub);
		oos.close();
		oos = new ObjectOutputStream(new FileOutputStream("prv.bin"));
		oos.writeObject(prv);
		oos.close();
	}	
}