![]() |
Delphi-Version: 2010
Schnelle Verschlüsselung/Entschlüsselung von Strings???
Hallo!
Ich übertrage String-Daten (300 - 1.500 Zeichen) vom Server zum Client - bisher als Plain-Text. Die Übetragung ist absolut zeitkritisch. Nun bin ich auf der Suche nach einem schnellen einfachen Verschlüsselunsalgorithmus. Ich brauche keine besondere Sicherheit, mir ist nur wichtig, dass die Daten nicht Plain-Text übertragen werden und möglichst schnell ver- und entschlüsselt werden. Was könnt Ihr mir empfehlen? |
AW: Schnelle Verschlüsselung/Entschlüsselung von Strings???
Xor Verschlüsselung (Bit Arithmetik)?!
|
AW: Schnelle Verschlüsselung/Entschlüsselung von Strings???
Hier eine Funktion für die XOR-Verschlüsselung.
Das Ergebnis ist ein String mit binären Daten (auch Hex $0). Ruft man die Funktion ein 2. Mal auf entsteht wieder der Orginaltext (was im Prinzip der Umkehrbarkeit von XOR liegt). Für die Übertragung per TCP/IP muss dem Empfänger über ein Längenwort mitgeteilt werden wie lange die verschlüsselten Daten sind.
Delphi-Quellcode:
function StringXorCrypt(const text, key:Ansistring):Ansistring;
var i, j, keylen : Integer; begin SetLength(Result, length(text)); j := 1; keylen := Length(key); for i := 1 to Length(text) do begin Result[i] := AnsiChr(ord(text[i]) xor ord(key[j])); Inc(j); if j > keylen then j := 1; end; end; |
AW: Schnelle Verschlüsselung/Entschlüsselung von Strings???
Wenn es dir nur um einen Sichtschutz geht, wie wäre es mit ROT13 Verschlüsselung? Hierbei werden die Buchstaben des Alphabets um 13 Stellen rotiert. Diese Verschlüsselungsart ist alt, bekannt, aber nicht unbedingt sicher, denn sie kann zu Not wieder leicht dekodiert werden. Aber sie ist schnell und bietet einen guten Sichtschutz.
|
AW: Schnelle Verschlüsselung/Entschlüsselung von Strings???
Vielen Dank für die schnelle Reaktionen!
@shmia Muss der Key genauso lang sein wie der zu verschlüsselnde String (so wie es bei XOR vorgeschrieben ist) oder kann ich ein beliebig langes Key verwenden? |
AW: Schnelle Verschlüsselung/Entschlüsselung von Strings???
Zitat:
|
AW: Schnelle Verschlüsselung/Entschlüsselung von Strings???
Zitat:
Wenn der Key nur ein Zeichen lang ist, wird jedes Zeichen mit dem gleichen Wert "verXodert". |
AW: Schnelle Verschlüsselung/Entschlüsselung von Strings???
Kann ich AnsiString durch PAnsiChar ersetzen? Sollte dadurch perfomanter werden...
|
AW: Schnelle Verschlüsselung/Entschlüsselung von Strings???
Zitat:
Ich empfehle vor der Änderung einen kleinen Test schreiben. Dann kannst du danach sicher sein, dass alles noch in Ordnung ist.
Delphi-Quellcode:
PS: die Delphi Funktion ist um Welten schneller als der Datentransport über das Netzwerk.
var
text, key, ctext : Ansistring; begin text := 'das ist der Text, der verschlüssel werden soll'#0#13#10'....1234567890'; key := 'geheimer key'; ctext := StringXorCrypt(text, key); if StringXorCrypt(ctext, key) <> text then raise Exception.Create('Funktion StringXorCrypt() ist defekt'); end; Du fängst jetzt an zu optimieren ohne zu wissen ob das überhaupt notwendig ist. Man nennt das "premature optimization". siehe auch: ![]() |
AW: Schnelle Verschlüsselung/Entschlüsselung von Strings???
Delphi-Quellcode:
Result[i] := chr(ord(Text[i]) xor ord(Key[j]));
Vielleicht noch chr direkt durch AnsiChar ersetzen, ansonsten "Inkompatible Typen: 'AnsiChar' und 'Char'" Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz