Mi sto esercitando con RSA e JAVA. Con questo codice volevo cifrare la frase "Frase da cifrare!" e poi decifrarla ma mi risulta tutta un'altra cosa. Cosa sbaglio?

codice:
import java.security.*;
import javax.crypto.*;
import java.security.spec.*;

public class  Mio{

	public static void main(String[] args) throws Exception{

		KeyPairGenerator kpg=null;
		kpg = KeyPairGenerator.getInstance("RSA");
                kpg.initialize(1024);
                KeyPair kp = kpg.generateKeyPair();
		PublicKey pubblica=kp.getPublic();
		PrivateKey privata=kp.getPrivate();

		String s=new String("Frase da cifrare!");
		byte[] b=s.getBytes();

		//CODIFICA
		Cipher c=null;
		byte[] encodeFile=null;

		c = Cipher.getInstance("RSA/ECB/PKCS1Padding");			
		c.init(Cipher.ENCRYPT_MODE, pubblica);
		encodeFile = c.doFinal(b);

		//DECODIFICA
		Cipher cc=null;
		byte[] plainFile=null;

		cc = Cipher.getInstance("RSA/ECB/PKCS1Padding");
		cc.init(Cipher.DECRYPT_MODE, privata);
		plainFile = cc.doFinal(encodeFile);		

		String dec=plainFile.toString();
		System.out.println("Frase decodificata: "+dec);
	}
}