Entwickler-Ecke

Algorithmen, Optimierung und Assembler - AES-Verschlüsselung und XML


stiftmaster - So 26.06.05 12:27
Titel: AES-Verschlüsselung und XML
Hallo,

ich habe wie folgt eine XML-Datei erzeugt:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
if not Assigned(XML) then
  XML := TXMLDocument.Create(nil);
  XML.Active := True;
  XML.Encoding := 'UTF-8';
  XML.NodeIndentStr := '  ';
  XML.Options := [doNodeAutoIndent];


Soweit so gut. Danach habe ich einen String mit AES wie folgt verschlüsselt:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
function EncodeString(Value, Key: PChar): PChar;
var
  AES: TCipher_Rijndael;
begin
  try
    Result := Value;

    AES := TCipher_Rijndael.Create(Key, nil);
    Result := PChar(AES.EncodeString(Value));
  finally
    AES := nil;
    AES.Free;
  end;
end;


Bei der Verschlüsselung kommt z.B. sowas raus: "'b¨Ð«øR'#$1B'´á'#$19#$1D'‡I¿%0'"

Diesen String soll ich nun in der XML-Datei als Attribut von einem Knoten speichern. Dafür verwendet ich folgenden Vorgang:


Delphi-Quelltext
1:
XML.ChildNodes['Main_Knoten'].ChildNodes['Konto1'].Attributes['Decoded'] := Decode('KontoNr.1');                    


Dann kriege ich die Fehlermeldung: "An invalid character was found in text content." Ich vermute mal, dass UTF-8 nicht mit den ganzen Sonderzeichen klar kommt. Weiß jemand, wie ich das Problem umgehen kann bzw. wie ich den verschlüsselten String in der XML-Datei speichern kann.

Dankend

Stefan


retnyg - So 26.06.05 12:35

am besten das passwort noch Suche in: Delphi-Forum, Delphi-Library BASE64 verschlüsseln, so wie bei mime-mails


stiftmaster - So 26.06.05 13:25

okay, das ist dann noch ein NiceToHave. Aber das löst momentan nicht das Problem, dass ich den verschlüsselten Text nicht in einer XML-Datei speichern kann, oder etwa doch?

Stefan


retnyg - So 26.06.05 13:31

es löst dein problem dadurch, dass alle nicht darstellbaren zeichen in einen darstellbaren bereich verschoben werden