package groomiac.crocodesktop;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import javax.crypto.Cipher;
import javax.crypto.CipherInputStream;
import javax.crypto.CipherOutputStream;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
public class FileItem {
static String thefolder = null;
static String foldername = null;
static byte[] genIV(String filename){
String salt = foldername.toLowerCase() + "/" + filename;
byte[] ret = new byte[16];
System.arraycopy(Base.ivMac.doFinal(salt.getBytes()), 0, ret, 0, 16);
return ret;
}
static String loadEncFiles(int i) {
try {
Cipher c = Cipher.getInstance(Base.cbc);
IvParameterSpec ivSpec = new IvParameterSpec(genIV(filename(i)));
c.init(Cipher.DECRYPT_MODE, new SecretKeySpec(Base.kcipher.doFinal(Base.tmp_esk), Base.aes), ivSpec);
CipherInputStream cis = new CipherInputStream(new FileInputStream(file(i)), c);
return Utils.readFile(cis, "UTF-8");
} catch (Exception e) {
return null;
}
}
static void storeEncFiles(int i, String s) {
try {
Cipher c = Cipher.getInstance(Base.cbc);
IvParameterSpec ivSpec = new IvParameterSpec(genIV(filename(i)));
c.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(Base.kcipher.doFinal(Base.tmp_esk), Base.aes), ivSpec);
CipherOutputStream cos = new CipherOutputStream(new FileOutputStream(file(i)), c);
Utils.writeFile(s, cos);
} catch (Exception e) {
e.printStackTrace();
}
}
private final static String filename(int i) {
return "data_" + i + ".dat";
}
static File file(int i){
return new File(getAbsoluteFolder(), filename(i));
}
protected static String getAbsoluteFolder(){
return thefolder;
}
}