Encryption using IBM JCE
843810Dec 29 2003 — edited Sep 21 2004Help.. it doesn't work.. the size of the output file is always 0 kb..
import java.io.*;
import java.security.*;
import javax.crypto.*;
import javax.crypto.spec.*;
import sun.misc.*;
public class clase {
private final static int BUFFER = 32;
private static Cipher cp = null;
private static PublicKey rsaPub = null;
private static PrivateKey rsaPriv = null;
public static void main(String argv[]) {
String provider = "IBMJCE";
try {
KeyPairGenerator rsaKeyPairGen;
KeyPair rsaKeyPair;
Provider[] providers = Security.getProviders();
for (int i = 0; i < providers.length; i++) {
System.out.println("Provider: "+providers.getName());
}
if (Security.getProvider(provider) == null) {
try {
System.out.println("Installing provider " + provider);
Security.addProvider((Provider) Class.forName(provider).newInstance());
} catch (Exception ex) {
System.out.println("Cannot install provider: " + ex);
return;
}
}
System.out.println(getDateTime() + " Generate an RSA key pair");
try {
rsaKeyPairGen = KeyPairGenerator.getInstance("RSA", provider);
} catch (NoSuchAlgorithmException ex) {
System.out.println("RSA KeyPair Generator not found in "+provider+" provider.");
return;
} catch (NoSuchProviderException ex) {
System.out.println("Provider "+provider+" not found.");
return;
}
System.out.println(getDateTime() + " Use modulus length = 1024");
rsaKeyPairGen.initialize(1024);
rsaKeyPair = rsaKeyPairGen.generateKeyPair();
if (rsaKeyPair == null) {
System.out.println(
"Key generation failure. KeyPair was not generated.");
return;
}
System.out.println(getDateTime() + " get RSA public key");
rsaPub = rsaKeyPair.getPublic();
System.out.println(rsaPub);
System.out.println(getDateTime() + " get RSA private key");
rsaPriv = rsaKeyPair.getPrivate();
System.out.println(rsaPriv);
System.out.println(getDateTime() + " generate RSA cipher");
try {
cp = Cipher.getInstance("RSA", provider);
} catch (NoSuchAlgorithmException ex) {
System.out.println("RSA cipher not found in "+provider+" provider. "+ex);
return;
} catch (NoSuchProviderException ex) {
System.out.println("Provider "+provider+" not found.");
return;
} catch (NoSuchPaddingException ex) {
System.out.println("Invalid padding.");
return;
}
FileInputStream fis;
FileOutputStream fos;
CipherOutputStream cos;
try {
cp.init(Cipher.ENCRYPT_MODE, rsaPub);
System.out.println(" "+cp.getAlgorithm());
System.out.println(" "+cp.getProvider());
fis = new FileInputStream("C:\\Interc\\receiver_in_001\\test.txt");
fos = new FileOutputStream("C:\\Interc\\receiver_in_001\\test1.txt");
cos = new CipherOutputStream(fos, cp);
System.out.println(getDateTime() + " Init");
byte[] b = new byte[8];
int i = fis.read(b);
while (i != -1) {
System.out.println(getDateTime() + " Writing");
cos.write(b, 0, i);
i = fis.read(b);
}
cos.flush();
cos.close();
fos.close();
fis.close();
System.out.println(getDateTime() + " Finish");
} catch (Exception e) {
System.out.println("error: " + e);
}
} catch (Exception e){
System.out.println("Exception: "+e);
}
}
private static String getDateTime() {
return "";
}
}