File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
The moose likes Java in General and the fly likes Encrypting & Decrypting an XML File using Base64Encoder & Base64Decoder Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of EJB 3 in Action this week in the EJB and other Java EE Technologies forum!
JavaRanch » Java Forums » Java » Java in General
Bookmark "Encrypting & Decrypting an XML File using Base64Encoder & Base64Decoder" Watch "Encrypting & Decrypting an XML File using Base64Encoder & Base64Decoder" New topic
Author

Encrypting & Decrypting an XML File using Base64Encoder & Base64Decoder

shiva kumar
Greenhorn

Joined: Aug 22, 2006
Posts: 7
Can any one give me a code sample to encrypt & decrypt an xml file

I tried this code. It works fine. But not supposed to use sun packages.
The URL http://java.sun.com/products/jdk/faq/faq-sun-packages.html says that its risky to use sun packages.


So can anyone help in doing encryption in other way.
Awaiting reply
Thanks in advance.


import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.ObjectInputStream;
import java.security.Key;

import javax.crypto.Cipher;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

public class EncryptDecrypt
{
private String characterEncoding;
private Cipher encryptCipher;
private Cipher decryptCipher;
private BASE64Encoder base64Encoder = new BASE64Encoder();
private BASE64Decoder base64Decoder = new BASE64Decoder();

private static Key getKey() throws Exception {
Key key = null;
ObjectInputStream in=null;
try {
in = new ObjectInputStream(new FileInputStream("d:\\key1"));
key = (Key)in.readObject();
} catch (FileNotFoundException e) {
throw new Exception("File not found"+ e.getMessage());
}finally {
if(in != null) {
try { in.close(); }catch(Exception ex){ }
}
}
return key;
}

public EncryptDecrypt(String characterEncoding) throws Exception{
Key key = getKey();
this.characterEncoding = characterEncoding;
this.encryptCipher = Cipher.getInstance("DESede/ECB/PKCS5Padding");
this.encryptCipher.init(javax.crypto.Cipher.ENCRYPT_MODE, key);
this.decryptCipher = Cipher.getInstance("DESede/ECB/PKCS5Padding");
this.decryptCipher.init(javax.crypto.Cipher.DECRYPT_MODE, key);
}

synchronized public String encrypt(String text) throws Exception{
byte[] textBytes = text.getBytes(characterEncoding);
byte[] encryptedTextBytes = this.encryptCipher.doFinal(textBytes);
String encodedEncryptedText = this.base64Encoder.encode(encryptedTextBytes);
return encodedEncryptedText;
}

synchronized public String decrypt(String encodedEncryptedText) throws Exception{
byte[] encryptedTextBytes = this.base64Decoder.decodeBuffer(encodedEncryptedText);
byte[] textBytes = this.decryptCipher.doFinal(encryptedTextBytes);
String recoveredText = new String(textBytes, characterEncoding);
return recoveredText;
}

public static String getString(FileReader fr) throws Exception{
StringBuffer text = new StringBuffer();
String lineSep = System.getProperty("line.separator");
String nextLine="";
BufferedReader in = new BufferedReader(fr);
try{
while ((nextLine = in.readLine()) != null){
text.append(nextLine);
text.append(lineSep);
}
return text.toString();
} catch (Exception e) {
System.out.println("Error Occured in getString method:");
e.printStackTrace();
}finally{
in.close();
}
return null;
}

public static void main(String[] args){
try{

EncryptDecrypt encryptAgent = new EncryptDecrypt("ASCII");
String stxt = EncryptDecrypt.getString(new FileReader("d:\\enc\\one.xml"));
String encodedEncryptedText = encryptAgent.encrypt(stxt);
FileWriter fw = new FileWriter("d:\\enc\\one.xml");
fw.write(encodedEncryptedText);
fw.close();
System.out.println("done encryption");

String encryptedText = EncryptDecrypt.getString(new FileReader("d:\\enc\\two.xml"));
String recoveredText = encryptAgent.decrypt(encryptedText);
System.out.println("\n\nRecovered Text ..........[" + recoveredText + "]");
FileWriter fw1 = new FileWriter("d:\\enc\\three.xml");
fw1.write(recoveredText);
fw1.close();
System.out.println("done decryption");
}
catch (Exception e){
System.out.println("Error Occured:");
e.printStackTrace(System.out);
}
}
}
[ August 23, 2006: Message edited by: shiva kumar ]
Jesper de Jong
Java Cowboy
Saloon Keeper

Joined: Aug 16, 2005
Posts: 13868
    
  10

You can use the Apache Jakarta Commons Codec library, it has a Base64 encoder and decoder that you can use.


Java Beginners FAQ - JavaRanch SCJP FAQ - The Java Tutorial - Java SE 7 API documentation
Scala Notes - My blog about Scala
Ulf Dittmer
Marshal

Joined: Mar 22, 2005
Posts: 39541
    
  27
Is this question substantially different from the one you posted yesterday? If not, then let's continue the discussion over there, where you got helpful replies.


Ping & DNS - updated with new look and Ping home screen widget
 
It is sorta covered in the JavaRanch Style Guide.
 
subject: Encrypting & Decrypting an XML File using Base64Encoder & Base64Decoder
 
Similar Threads
BadPaddingException
Encoding XML file using Base64Encoder
Cannot find any provider supporting Blowfish/ECB/PKCS5Padding
Triple DES decryption
Characters jumbled pls help