package org.irmacard.personalisation; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.StringReader; import java.io.StringWriter; import java.util.Properties; import org.jasypt.util.text.BasicTextEncryptor; public class EncryptedLoader { BasicTextEncryptor encryptor; String filename; public EncryptedLoader(char[] cs, String filename) { encryptor = new BasicTextEncryptor(); encryptor.setPasswordCharArray(cs); this.filename = filename; } public Properties load() throws IOException { StringBuilder fileData = new StringBuilder(); BufferedReader reader = new BufferedReader( new FileReader(filename)); char[] buf = new char[1024]; int numRead=0; while((numRead=reader.read(buf)) != -1){ String readData = String.valueOf(buf, 0, numRead); fileData.append(readData); } reader.close(); String decrypted = encryptor.decrypt(fileData.toString()); Properties props = new Properties(); props.load(new StringReader(decrypted)); return props; } public void save(Properties properties) throws IOException { StringWriter stringWriter = new StringWriter(); properties.store(stringWriter, ""); String encrypted = encryptor.encrypt(stringWriter.toString()); BufferedWriter bw = new BufferedWriter(new FileWriter(filename)); bw.write(encrypted); bw.close(); } }