package com.maxiee.heartbeat.backup;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.security.Key;
import javax.crypto.Cipher;
import javax.crypto.CipherInputStream;
import javax.crypto.spec.SecretKeySpec;
/**
* Created by maxiee on 15-8-12.
*/
public class FileDES {
private final static String KEY_RULE = "maxieejudy";
private static Key initKey() {
byte[] keyByte = KEY_RULE.getBytes();
byte[] byteTemp = new byte[8];
for (int i=0; i<byteTemp.length && i<keyByte.length; i++) {
byteTemp[i] = keyByte[i];
}
return new SecretKeySpec(byteTemp, "DES");
}
public static void doEncryptFile(File in, File out) {
if (in == null) return;
try {
Cipher encryptCipher = Cipher.getInstance("DES");
encryptCipher.init(Cipher.ENCRYPT_MODE, initKey());
FileInputStream is = new FileInputStream(in);
CipherInputStream cin = new CipherInputStream(is, encryptCipher);
OutputStream os = new FileOutputStream(out);
byte[] buffer = new byte[1024];
int len;
while ((len=cin.read(buffer)) > 0) {
os.write(buffer, 0, len);
os.flush();
}
os.close();
cin.close();
is.close();
} catch (Exception e) {e.printStackTrace();}
}
public static boolean doDecryptFile (InputStream in, OutputStream os) throws Exception{
if (in == null) return false;
Cipher decryptCipher = Cipher.getInstance("DES");
decryptCipher.init(Cipher.DECRYPT_MODE, initKey());
CipherInputStream cin = new CipherInputStream(in, decryptCipher);
byte[] buffer = new byte[1024];
int len;
while ((len=cin.read(buffer)) > 0) {
os.write(buffer, 0, len);
}
cin.close();
return true;
}
public static boolean doDecryptFileNotClose (InputStream in, OutputStream os) throws Exception{
if (in == null) return false;
Cipher decryptCipher = Cipher.getInstance("DES");
decryptCipher.init(Cipher.DECRYPT_MODE, initKey());
CipherInputStream cin = new CipherInputStream(in, decryptCipher);
byte[] buffer = new byte[1024];
int len;
while ((len=cin.read(buffer)) > 0) {
os.write(buffer, 0, len);
}
return true;
}
}