# XML- Datei verschlüsseln



## Gast (10. Nov 2008)

Hallo,

gibt es eine Möglichkeit, eine XML- Datei zu verschlüsseln mit einem XMLEventWriter?
Sollte eine einfache Verschüsselung sein (XOR), dann ist es aber nicht mehr möglich, wie unten in die XML- Datei zu schreiben (so weit ich das jetzt probiert habe)???!!!



```
XMLEvent startTest = eventFactory.createStartElement("", "", "Test");   
writer.add(startTest);
```

Wie könnte ich das lösen??
Dankeschön für die Antworten,
[/code]


----------



## Wildcard (10. Nov 2008)

Schau dir vielleicht mal EMF an. Das unterstütz von Haus aus echt verschlüsselte XML Dateien.


----------



## Guest (11. Nov 2008)

z.B.: http://www.theserverside.com/tt/articles/article.tss?l=BindingXMLJava ??
ist das sowas, EMF hab ich noch nie  gehört oder von gelesen.


----------



## Wildcard (11. Nov 2008)

Genau dieses. Die Hauptseite:
http://www.eclipse.org/modeling/emf/


----------



## FArt (11. Nov 2008)

Ich würde den relevanten Inhalte nicht verschlüsseln, sondern signieren. 
Dann kann man den Inhalt zwar lesen, aber nicht manipulieren.


----------



## Guest (12. Nov 2008)

Hat jemand von Euch schon mal mit dem EMF gearbeitet? wie wird die XML- Datei verschlüsselt? das man diese überhaupt nicht mehr lesen kann oder kann man sich den Algo aussuchen?


----------



## Guest (12. Nov 2008)

Mein Problem ist ja auch, das ich das Einlesen der XML- Datei schon implementiert habe mit dem

SAXBuilder builder = new SAXBuilder();	


zum lesen der XML- Datei und mit dem

private XMLEventWriter writer;  
fos = new FileOutputStream(pathFile);
writer = outputFactory.createXMLEventWriter(fos);   

zum schreiben, ich frag mich jetzt, wieviel Aufwand es ist, das auf EMF umzuschreiben?

Vielen Dank,


----------



## Wildcard (12. Nov 2008)

Das sieht in etwa so aus:

```
public class MyXMIFactoryImpl extends XMIResourceFactoryImpl {
	@Override
	public Resource createResource(URI uri) {
		XMIResourceFactoryImpl resFactory = new XMIResourceFactoryImpl();
		XMIResource resource = (XMIResource) resFactory.createResource(uri);
		try {
			resource.getDefaultLoadOptions().put(Resource.OPTION_CIPHER,
					new AESCipherImpl("12345"));
			resource.getDefaultSaveOptions().put(Resource.OPTION_CIPHER,
					new AESCipherImpl("12345"));
		} catch (Exception e) {
			e.printStackTrace();
		}
		return resource;
	}
}
```
Den Algorithmus kannst du dir aussuchen.


----------



## Wildcard (12. Nov 2008)

Anonymous hat gesagt.:
			
		

> Mein Problem ist ja auch, das ich das Einlesen der XML- Datei schon implementiert habe...


Kannst auch einfach einen CipherOutputStream zwischenschalten...


----------



## Guest (12. Nov 2008)

Vielen Dank Wildcard,

Ich hab mir jetzt eine BeispielApplikation heruntergeladen und das Projekt mit Eclipse geöffnet, es werden aber einige imports nicht gefunden:


```
import org.eclipse.emf.common.util.Diagnostic;
import org.eclipse.emf.common.util.EMap;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EAttribute;

usw.
```

ich hab jetzt nach dieser jar gesucht aber noch nichts brauchbares gefunden,
hat jemand einen Link wo ich die benötigten jars finden kann?


----------



## Wildcard (12. Nov 2008)

http://wiki.eclipse.org/index.php/E..._.28jar_files.29_do_I_need_in_my_CLASSPATH.3F


----------



## Guest (12. Nov 2008)

Wildcard hat gesagt.:
			
		

> Anonymous hat gesagt.:
> 
> 
> 
> ...



gibts dafür ein kleines lauffähiges Programm, ackere gerade diese Seite durch: 

http://www.theserverside.com/tt/articles/article.tss?l=BindingXMLJava

so weit ich das bis jetzt einschätzen kann, ist das aber ein eher umfangreicheres Beispiel,

Vielen Dank!!!!


----------



## MQue (12. Nov 2008)

Hallo nochmal,

hab jetzt bei meinem Wirter einen CipherOutputStream dazwischengehängt, klappt super, 

natürlich gehts nicht ohne Probleme, eingelesen habe ich die xml- Datei bis jetzt so wie unten, da kann ich ja jetzt leider keinen CipherOutputStream dazwischen- Schalten, 
Wie kann ich das jetzt am Besten machen, hättet ihr da einen Tipp?

Vielen Dank,


```
try {
            Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(file);
            root.setUserObject(file.getName());
            buildTreeModelByTreeWalk(doc, root);  
            } 
        catch (Exception e) {
                e.printStackTrace();
            }
```


----------



## Wildcard (12. Nov 2008)

Statt File mit Streams arbeiten. Sollte man eigentlich immer tun, da es wesentlich flexibler ist.


----------

