## need help ; Algorithm RSA

this class rsa using netbeans

//this class rsa was named de

import java.math.BigInteger;
import java.security.SecureRandom;

public class de {
private BigInteger n, d, e;

private int bitlen = 1024;

/** Create an instance that can encrypt using someone elses public key. */
public de(BigInteger newn, BigInteger newe) {
n = newn;
e = newe;
}

/** Create an instance that can both encrypt and decrypt. */
public de(int bits) {
bitlen = bits;
SecureRandom r = new SecureRandom();
BigInteger p = new BigInteger(bitlen / 2, 100, r);
BigInteger q = new BigInteger(bitlen / 2, 100, r);
n = p.multiply(q);
BigInteger m = (p.subtract(BigInteger.ONE)).multiply(q
.subtract(BigInteger.ONE));
e = new BigInteger("3");
while (m.gcd(e).intValue() > 1) {
e = e.add(new BigInteger("2"));
}
d = e.modInverse(m);
}

/** Encrypt the given plaintext message. */
public synchronized String encrypt(String message) {
return (new BigInteger(message.getBytes())).modPow(e, n).toString();
}

/** Encrypt the given plaintext message. */
public synchronized BigInteger encrypt(BigInteger message) {
return message.modPow(e, n);
}

/** Decrypt the given ciphertext message. */
public synchronized String decrypt(String message) {
return new String((new BigInteger(message)).modPow(d, n).toByteArray());
}

/** Decrypt the given ciphertext message. */
public synchronized BigInteger decrypt(BigInteger message) {
return message.modPow(d, n);
}

/** Generate a new public and private key set. */
public synchronized void generateKeys() {
SecureRandom r = new SecureRandom();
BigInteger p = new BigInteger(bitlen / 2, 100, r);
BigInteger q = new BigInteger(bitlen / 2, 100, r);
n = p.multiply(q);
BigInteger m = (p.subtract(BigInteger.ONE)).multiply(q
.subtract(BigInteger.ONE));
e = new BigInteger("3");
while (m.gcd(e).intValue() > 1) {
e = e.add(new BigInteger("2"));
}
d = e.modInverse(m);
}

/** Return the modulus. */
public synchronized BigInteger getN() {
return n;
}

/** Return the public key. */
public synchronized BigInteger getE() {
return e;
}
}

//this jButton using to encrypt
private void encryptActionPerformed(java.awt.event.ActionEvent evt) {
de f = new de(512);//Create an instance f from class de
String bb=t1.getText();
String gg = f.encrypt(bb);
t2.setText(gg);

}

//this jButton using to decrypt proplem her in this code
private void decryptActionPerformed(java.awt.event.ActionEvent evt) {

de g =new de(512);//Create an instance g from class de

String ft=t2.getText();

String sd=g.decrypt(ft);
t3.setText(sd.toString());
}
*********************************
output:

string "hh" is input
encrept:13640563546777606586368
decrept:hf+���3JIݘ�
Z74��m Jz��Pq�z7H�#m7��P~��� c�pλ5�2'6r��

need help??????????????????