AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

XOR-Resultat als String

Ein Thema von TomDooley · begonnen am 31. Okt 2006 · letzter Beitrag vom 2. Nov 2006
Antwort Antwort
Seite 1 von 2  1 2      
TomDooley

Registriert seit: 26. Jan 2004
124 Beiträge
 
#1

XOR-Resultat als String

  Alt 31. Okt 2006, 14:37
Ich habe zwei Schlüssel (Key1 und Key2) mit xor verknüpft:

Delphi-Quellcode:
  for i := 1 to x do
    Result[x] := Chr(Byte(Key1[x]) xor Byte(Key2[x]));
Der Resultatstring enthält die richtigen Werte aber eben Bit für Bit:

Beispiel:

Result = #3#3#2#2#3#A#A#A ich möchte aber:

Result = '33223AAA'
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.767 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: XOR-Resultat als String

  Alt 31. Okt 2006, 14:46
du könntest die '#' mit StringReplace entfernen.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#3

Re: XOR-Resultat als String

  Alt 31. Okt 2006, 14:47
Hallo,

kurz und knapp

Result := AnsiReplaceText(Result,'#',''); // in StrUtils definiert, ggfls. in Uses aufnehmen. Stephan
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#4

Re: XOR-Resultat als String

  Alt 31. Okt 2006, 14:50
Hmm... du willst eine lesbare ausgabe der bytewerte?

Da gibts drei Möglichkeiten:

a) Ausgabe als Hex->zwei stellen pro byte ("FF01AB")
b) Ausgabe in Dezimal -> drei stellen pro byte ("255255001010011")
c) ausgabe im klartext mit delimiter->mind. zwei stellen pro byte (#255#255#1#10#11")

Das ganze ist über verschiedene funktionen machbar.

@die zwei anderen komiker: loooool.....
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.767 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: XOR-Resultat als String

  Alt 31. Okt 2006, 14:56
@DGL Luke:

wenn man aus:

#3#3#2#2#3#A#A#A


diese machen will:

33223AAA

Dann sind die genannten Methoden sind nicht so verkehrt.

Wenn die Ausgabe eine ganz andere sein soll, dann greifen sie natürlich nicht.

Grüße
einer der Komiker
Klaus
  Mit Zitat antworten Zitat
TomDooley

Registriert seit: 26. Jan 2004
124 Beiträge
 
#6

Re: XOR-Resultat als String

  Alt 31. Okt 2006, 15:03
Hallo alle

Danke erstmal für die prompten Antworten. Falls die Problemstellung nicht überall gleich rüberkam: sorry.

Stephan und Klaus haben mich schon richtig verstanden. Es geht mir darum die Hex-Werte lesbar (in diesem Fall ohne $) darzustellen. Dies entspricht dann Lösung a.) von Luke.
Ich kann aber $ wohl nicht mit Replace ersetzen, da dieses Zeichen kein Teil vom String darstellt sondern nur die Hex-Repräsentation der nächsten Stelle anzeigt.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#7

Re: XOR-Resultat als String

  Alt 31. Okt 2006, 15:11
@Klaus01 und nahpets:
Ihr habt das System noch nicht verstanden, wie man mit Pascal nicht druckbare Zeichen darstellt.
Wenn ich an einen String z.B. ein CarriageReturn + Linefeed anhängen möchte schreibe ich:
s :='Zeile, abgeschlossen mit CR/LF'#13#10; Das Rautezeichen ist nur ein Escapezeichen, dass aber im eigentlichen String nicht vorkommt.
Deshalb sind alle Ersetzungsaktion sinnlos.
s := #65#66#67; // ist das Gleiche wie 'ABC'
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von OldGrumpy
OldGrumpy

Registriert seit: 28. Sep 2006
Ort: Sandhausen
941 Beiträge
 
Delphi 2006 Professional
 
#8

Re: XOR-Resultat als String

  Alt 31. Okt 2006, 15:13
Zitat von TomDooley:
Ich habe zwei Schlüssel (Key1 und Key2) mit xor verknüpft:

Delphi-Quellcode:
  for i := 1 to x do
    Result[x] := Chr(Byte(Key1[x]) xor Byte(Key2[x]));
Der Resultatstring enthält die richtigen Werte aber eben Bit für Bit:

Beispiel:

Result = #3#3#2#2#3#A#A#A ich möchte aber:

Result = '33223AAA'
Delphi-Quellcode:
function XorMyKeys(const Key1, Key2: Array of Byte): string;
var
  i :Integer;
begin
  for i:=Low(Key1) to High(Key1) do
  begin
    result:=result+Format('%.2x',[Key1[i] xor Key2[i]]);
  end;
end;
Ungetestet, Fehlerbehandlung fehlt natürlich auch noch. Ausserdem wird angenommen dass Key1 und Key2 gleich lang sind und den gleichen Indexbereich haben. Hat sicherlich noch Optimierungspotential.
Raus kommt ein String der die Hexäquivalente der XOR-Verschluesselung enthält.
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet. " (Henning Richter)
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#9

Re: XOR-Resultat als String

  Alt 31. Okt 2006, 16:03
Hallo,

mit der Funktion Delphi-Referenz durchsuchenBinToHex aus der Unit Classes kann man recht einfach einen Pufferinhalt in einen lesbaren Hexstring überführen:

Delphi-Quellcode:
var
  sInput : string;
  sOutput : string;
begin
  sInput := #3#3#2#2#3#$A#$A#$A;
  SetLength (sOutput, 2 * Length(sInput));
  BinToHex (PChar(sInput), PChar(sOutput), Length(sInput));
end;
Gruß Hawkeye
  Mit Zitat antworten Zitat
TomDooley

Registriert seit: 26. Jan 2004
124 Beiträge
 
#10

Re: XOR-Resultat als String

  Alt 31. Okt 2006, 16:28
Das kommt meinem Wunsch nun doch sehr nahe. Ich bekomme:

03030202030A0A0A Muss ich da manuell nun jedes zweite Zeichen entfernen oder gibt es da auch noch eine elegantere Lösung? Bzw. ich denke ich müsste vor dem xor nicht ein Byte mit einem Zeichen sondern ein Byte mit zwei Zeichen befüllen (bzw. ein Nibble mit einem Zeichen). Geht das?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz