![]() |
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 :confused: agradezco sus comentarios para poder migrar la función a delphi y funcione bien. De antemano muchas gracias. |
Componentes para encriptacion
Hola... sabes yo tengo unos componentes super buenos para realizar una encriptacion profesional, si los quieres contactame a mi crreo smith_visual@hotmail.com para poder enviartelos..:)
|
Que tal si lo publicas aqui y/o lo compartes(*) con todos? ;)
(*)Siempre que sean componentes libres o tuyos. |
Prueba con esto:
|
Seoane, solo que yo veo un error al traducir el código
en la linea Cita:
Y estan usando una suma en lugar de AND, eso cambia todo el resultado. Saludos. |
Cita:
|
Cita:
Saludos |
problema al subir los componentes
Tplockbox.zip:
Your file of 1,01 MB bytes exceeds the forum's limit of 29,3 KB for this filetype. este errr me apaece al intentar subir los componentes de encriptacion... alguien me puede decir como los puedo subir para compartirlos con todos Uds..?? :) |
Hola,
Los archivos que pueden adjuntarse en los hilos de los foros están limitados en tamaño. Por el momento tendrías que enlazar la URL desde la que descargar el archivo en cuestión. Si no dispones de espacio Web puedes utilizar algún servicio gratuito que te lo proporcione: en Genbeta se listan algunos. Por otro lado, y si lo prefieres, puedes enviarme el archivo a la dirección de correo: davidesperalta (ARROBA) gmail.com Yo me encargaré de subirlo a mi espacio Web en el ClubDelphi y pondré aquí mismo la URL desde la que podrán descargarse los componentes. Lo dejo a tu elección. Si tienes algún otro comentario no dudes en hacerlo. :) |
ahora si...
amigos estos son los componentes de encriptacion http://files.to/get/323241/29686/Tplockbox.zip
para utilizarlos deben incluir las librerias de los componentes en el USES (sin colocar ningun compoente sobre algun DataModule o Form) implementation {$R *.dfm} Uses LbCipher,LbString; type TEncryption = (eBf, eBfCbc, eDes, eDesCbc, e3Des, e3DesCbc, eRdl, eRdlCbc); Var { Definimos las variables para la Encriptación... } Key64 : TKey64; Key128 : TKey128; Key192 : TKey192; Key256 : TKey256; luego debemos escribir las Funciones para Encriptar y Desencriptar : function Encriptar(eTexto, Clave: String): String; var txtEncriptado : String; begin txtEncriptado:=''; Reactivar(Clave); // txtEncriptado:=RDLEncryptStringCBCEx(eTexto,Key64,16,True); Result:=txtEncriptado; end; function Desencriptar(dTexto, Clave: String): String; var tDesEncriptado : String; begin tDesEncriptado:=''; Reactivar(Clave); // tDesEncriptado:=RDLEncryptStringCBCEx(dTexto,Key64,16,False); Result:=tDesEncriptado; end; procedure .Reactivar(pClave: String); begin GenerateLMDKey(Key64,SizeOf(Key64),pClave); GenerateLMDKey(Key128,SizeOf(Key128),pClave); GenerateLMDKey(Key192,SizeOf(Key192),pClave); GenerateLMDKey(Key256,SizeOf(Key256),pClave); end; El parámetro "Clave", utilizado en las funciones "Encriptar y Desencriptar" nos indica cual sera la "Clave" en la que se basará nuestra encriptación... okas.. espero que les sirva... :D |
Muchas gracias a todos por su pronta respuesta
|
|
La franja horaria es GMT +2. Ahora son las 04:39:21. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi