Ver Mensaje Individual
  #1  
Antiguo 03-01-2007
Redneck Redneck is offline
Registrado
 
Registrado: ene 2007
Posts: 2
Reputación: 0
Redneck Va por buen camino
Thumbs down Encriptación.

Primero que todo les deseo un feliz año nuevo a todos los miembros de la página y los felicito por llevar el sitio de lo mas actualizado posible.

Bien, tengo una funcion que encripta una cadena, pero está en Visual Basic, traté de pasarla a Delphi pero los resultados no fueron los mismos:

Acá la función Visual:

Public Function xDecrypt$(Strg$, PASSWORD$)
Dim b$, s$, i As Long, j As Long
Dim A1 As Long, A2 As Long, A3 As Long, P$ as Long
j = 1
For i = 1 To Len(PASSWORD$)
P$ = P$ & Asc(Mid$(PASSWORD$, i, 1))
Next
For i = 1 To Len(Strg$) Step 2
A1 = Asc(Mid$(P$, j, 1))
j = j + 1: If j > Len(P$) Then j = 1
b$ = Mid$(Strg$, i, 2)
A3 = Val("&H" + b$)
A2 = A1 Xor A3
s$ = s$ + Chr$(A2)
Next
xDecrypt$ = s$
End Function


donde la PASSWORD es 'c' y Strg es 74606A780C0C el resultado debiera ser MYSA55. Logré llegar a esto cuando la pasé a Delphi:

procedure TForm1.Button2Click(Sender: TObject);
var
a1,a2,a3,s,i,j : LongInt;
// a2,a3 : Double;
cadena,pass,p,h,b : String;
// j : Integer;
z,code : INteger;
begin
pass := edit2.Text;
cadena := edit1.Text;
j := 1;
For i := 1 To Length(pass) Do
P := P + IntToStr(Ord(Copy(pass,i,1)[1]));

i:=1;
While i <= Length(cadena) Do
Begin
A1 := Ord(Copy(P,J,1)[1]);
j := j + 1;
If j > Length(P) Then
j := 1;
b := Copy(cadena,i,2);
Val('$H' + b,z,code);
A3 := z;
A2 := A1 Xor A3;
s := s + StrToInt(Chr(A2));
i := i + 2;
end;

edit3.Text := IntToStr(s);

end;


Pero me da como resultado 54 agradezco sus comentarios para poder migrar la función a delphi y funcione bien.

De antemano muchas gracias.
Responder Con Cita