Granny's Programming Pearls
"inside of every large program is a small program struggling to get out"
JavaRanch.com/granny.jsp
The moose likes Java in General and the fly likes the encrypted file is cutted shortter Big Moose Saloon
  Search | Java FAQ | Recent Topics
Register / Login


Win a copy of The Mikado Method this week in the Agile and other Processes forum!
JavaRanch » Java Forums » Java » Java in General
Reply Bookmark "the encrypted file is cutted shortter" Watch "the encrypted file is cutted shortter" New topic
Author

the encrypted file is cutted shortter

zb cong
Ranch Hand

Joined: Jan 14, 2002
Posts: 403
hello
my code as following:


public class EncryptHandler {

public EncryptHandler() {
}

public SecretKey genKey() {
try {
KeyGenerator kg = KeyGenerator.getInstance("DESede");
kg.init(168);
SecretKey key = kg.generateKey();
return key;
} catch (Exception e) {
e.printStackTrace();
System.exit(-1);
return null;
}
}

public SecretKey readKey(String path) {
try {
FileInputStream fin = new FileInputStream(path);
int num = fin.available();
byte[] keykb = new byte[num];
fin.read(keykb);

SecretKeySpec key = new SecretKeySpec(keykb, "DESede");
return key;

} catch (Exception e) {
e.printStackTrace();
System.exit(-1);
return null;
}
}

public void saveKeyAsObject(SecretKey key, String destPath) {
try {
ObjectOutputStream o = new ObjectOutputStream(new FileOutputStream(
destPath));
o.writeObject(key);
} catch (Exception e) {
System.exit(-1);
e.printStackTrace();
}

}

public void saveKeyAsByte(SecretKey key, String destPath) {
try {
byte[] kb = key.getEncoded();
FileOutputStream fo = new FileOutputStream(destPath);
fo.write(kb);
} catch (Exception e) {
e.printStackTrace();
System.exit(-1);
}

}

public void encryptFile(String srcPath, String destPath, SecretKey key) {
try {

Cipher cp = Cipher.getInstance("DESede");
cp.init(Cipher.ENCRYPT_MODE, key);

BufferedReader reader = new BufferedReader(new InputStreamReader(
new FileInputStream(srcPath)));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(
new CipherOutputStream(new FileOutputStream(destPath), cp)));

String tmpStr = "";
while ((tmpStr = reader.readLine()) != null) {

writer.write(tmpStr + "\n");
writer.flush();
}
} catch (Exception e) {
e.printStackTrace();
System.exit(-1);
}
}

public void decryptFile(String srcPath, String destPath, SecretKey key) {
try {
Cipher cp = Cipher.getInstance("DESede");
cp.init(Cipher.DECRYPT_MODE, key);
BufferedReader reader = new BufferedReader(new InputStreamReader(
new CipherInputStream(new FileInputStream(srcPath), cp)));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(destPath)));
String tmpStr = "";
while ((tmpStr = reader.readLine()) != null) {
writer.write(tmpStr + "\n");
writer.flush();
}
} catch (Exception e) {
e.printStackTrace();
System.exit(-1);
}

}

public static void main(String[] argv) {
String s = "Hello world!!!";
EncryptHandler c = new EncryptHandler();
SecretKey key = c.genKey();
c.saveKeyAsByte(key, "c:\\temp\\testkey1");
SecretKey k = c.readKey("c:\\temp\\testkey1");
c.encryptFile("c:\\temp\\newpasswords", "c:\\temp\\oooo", key);
c.decryptFile("c:\\temp\\oooo", "c:\\temp\\ttttt", key);

}
}




i use symetrical key encrypt text firle the flow as follow:
1 generate key
2 save the key to the disk
3 read the key from disk
4 encrypt a text file
5 decrypt the file generated in step 4

but i find the final text file is cutted shortter then the original one, and i think the such problem result from "encryptFile" method, i guess it maybe result from the "padding" problem, but i don't know how to solve it, i am a beginner, who can help me?

thank you very much!!
 
I agree. Here's the link: http://zeroturnaround.com/jrebel - it saves me about five hours per week
 
subject: the encrypted file is cutted shortter
 
Similar Threads
i need to skip lines after exception
read lines after exception
Encoding XML file using Base64Encoder
java code to encrypt a file
"javax.crypto.BadPaddingException: pad block corrupted" using BouncyCastle and DESede: How to avoid?