Win a copy of Terraform in Action this week in the Cloud forum!
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Tim Cooke
  • Campbell Ritchie
  • Paul Clapham
  • Ron McLeod
  • Liutauras Vilda
Sheriffs:
  • Jeanne Boyarsky
  • Rob Spoor
  • Bear Bibeault
Saloon Keepers:
  • Jesse Silverman
  • Tim Moores
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
Bartenders:
  • Piet Souris
  • Al Hobbs
  • salvin francis

the encrypted file is cutted shortter

 
Ranch Hand
Posts: 416
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
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!!
 
Consider Paul's rocket mass heater.
reply
    Bookmark Topic Watch Topic
  • New Topic