Thema: Delphi RC4 Problem

Einzelnen Beitrag anzeigen

gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#4

Re: RC4 Problem

  Alt 30. Okt 2008, 22:58
Zitat von fortuneNext:
TByteArray(Result)[N] := TByteArray(uncrypted)[N] xor D[T];
Also die Fehler verschwinden, wenn man das durch
PByteArray(Result)[N] := PByteArray(uncrypted)[N] xor D[T]; ersetzt. Aber: Das ist sehr gefährlich, weil Result[0] und uncrypted[0] benutzt werden und es wahrscheinlich krachen wird. Was ist eigentlich das Hypnotische an strings, daß sie dauernd in Cryptocode verwendet werden?? Eigentlich sind sie da roh ziemlich unbrauchbar, nur als Hex- oder Base64-Ein/Ausgabe.

Im Origial verdent untyped constd bzw vars verwendet, d.h. in der Regel beim aktuellen Aufruf dann array of bytes oder so.

Zwei Ratschläge:

1. Wenn Du unbedingt strings benutzen willst, brauchst Du die Typcasts über Bytearrays eigentlich nicht, nur mußt Du halt darauf achten, daß die Indizierung bei 1 losgeht, also

Delphi-Quellcode:
for N := 1 to Count do begin
  Inc(I);
  T := D[I];
  Inc(J, T);
  D[I] := D[J];
  D[J] := T;
  Inc(T, D[I]);
  Result[N] := char(byte(uncrypted[N]) xor D[T]);
end;

2. Nimm lieber den Originalansatz mit const source; etc. Beim eigentlichen Aufruf kannst Du dann immer noch strings via Typecasts verwenden.


Gammatester
  Mit Zitat antworten Zitat