Hallo allerseits,
ich habe folgendes Problem: Ich habe eine XML Datei in die ich Daten via Java reinschreibe.
Nun ist mir aufgefallen, das diese völlig unverschlüsselt auf der Festplatte liegt. Also habe ich mich dran gemacht die Datei zu verschlüsseln.
Das sieht folgender maßen aus:
Mein Problem ist jetzt: Es kommt immer etwas anderes raus als vor der Verschlüsselung drin stand.
Kann mir jemand sagen was der Fehler ist?
Und wenn wir schon dabei sind: Mein Code sieht vielleicht nicht gerade Professionell aus, wenn jemand Verbesserungsvorschläge hat, nur raus damit!
Vielen Dank schon einmal im Voraus.
Gruß, Manni
ich habe folgendes Problem: Ich habe eine XML Datei in die ich Daten via Java reinschreibe.
Nun ist mir aufgefallen, das diese völlig unverschlüsselt auf der Festplatte liegt. Also habe ich mich dran gemacht die Datei zu verschlüsseln.
Das sieht folgender maßen aus:
Java:
public static void cryptAll() throws JAXBException, IOException,
InvalidKeyException, NoSuchAlgorithmException,
NoSuchPaddingException, IllegalBlockSizeException,
BadPaddingException {
// Dateiinhalt einlesen und in Variable "datei" speichern.
String s = "";
StringBuffer datei = new StringBuffer();
BufferedReader in = new BufferedReader(new FileReader(Pfad
.getInstance().getPfad()
+ "\\KeyAdministration\\applications.xml"));
while ((s = in.readLine()) != null) {
datei.append(in.readLine() + System.getProperty("line.separator"));
}
// Daten in einen String speichern
String apps = datei.toString();
// Daten verschlüsseln
byte[] cryptApp = encrypt(apps);
// Daten wieder in file schreiben
in.close();
file = new File(Pfad.getInstance().getPfad()
+ "\\KeyAdministration\\applications.xml");
try {
writer = new FileWriter(file);
for (int i = 0; i < cryptApp.length; i++) {
writer.write("" + cryptApp[i] + ",");
writer.write(System.getProperty("line.separator"));
writer.flush();
}
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void decryptAll() throws IOException, InvalidKeyException, NoSuchAlgorithmException, NoSuchPaddingException, IllegalBlockSizeException, BadPaddingException{
//Verschlüsselte Datei auslesen und in Variable datei speichern
String s = "";
StringBuffer datei = new StringBuffer();
BufferedReader in = new BufferedReader(new FileReader(Pfad.getInstance().getPfad()+"\\KeyAdministration\\applications.xml"));
while((s = in.readLine()) != null){
datei = datei.append(s);
}
String apps = datei.toString();
//Variable splitten
String[] decApps = apps.split(",");
//Variable in einem byte Array speichern
cryptApp = new byte[decApps.length];
for (int i = 0; i<decApps.length;i++){
int x = Integer.parseInt(decApps[i]);
cryptApp[i] = convertIntToByteArray(x);
}
//Daten wieder entschlüsseln und in die Datei zurück schreiben!
String decoded = decrypt(cryptApp);
in.close();
file = new File(Pfad.getInstance().getPfad()+"\\KeyAdministration\\applications.xml");
try {
writer = new FileWriter(file);
writer.write(decoded);
writer.flush();
// }
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static byte[] encrypt(String args) throws NoSuchAlgorithmException, NoSuchPaddingException, IOException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException{
byte[] bytes = args.getBytes();
c = Cipher.getInstance( "DES" );
java.security.Key k = new SecretKeySpec( getSchluessel().getBytes(), "DES" );
c.init( Cipher.ENCRYPT_MODE, k );
byte[] encoded = c.doFinal(bytes);
System.out.println(encoded);
return encoded;
}
public static String decrypt(byte[] args) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException{
c = Cipher.getInstance( "DES" );
java.security.Key k = new SecretKeySpec( getSchluessel().getBytes(), "DES" );
c.init( Cipher.DECRYPT_MODE, k );
byte[] bytes = c.doFinal(args);
String decoded = new String(bytes);
System.out.println(decoded);
return decoded;
}
public static String getSchluessel() {
return schluessel;
}
private static byte convertIntToByteArray(int val) {
byte[] buffer = new byte[4];
buffer[0] = (byte) (val >>> 24);
buffer[1] = (byte) (val >>> 16);
buffer[2] = (byte) (val >>> 8);
buffer[3] = (byte) val;
return buffer[3];
}
Mein Problem ist jetzt: Es kommt immer etwas anderes raus als vor der Verschlüsselung drin stand.
Kann mir jemand sagen was der Fehler ist?
Und wenn wir schon dabei sind: Mein Code sieht vielleicht nicht gerade Professionell aus, wenn jemand Verbesserungsvorschläge hat, nur raus damit!
Vielen Dank schon einmal im Voraus.
Gruß, Manni