Delphi - encriptar informacion

 
Vista:

encriptar informacion

Publicado por cesar (77 intervenciones) el 29/03/2007 03:10:01
saludos .
Quiero saber como puedo encriptar informacion y desencriptarla por medio de codigo o sea donde puedo encontrar codigo fuente aprfa encriptar informacion y vicebersa.
Les agradeceria mucho si me pueden ayudar

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:encriptar informacion

Publicado por Dr Juzam, (822 intervenciones) el 29/03/2007 18:13:08
Dave Barton tiene una buena librería de cifrado:

http://www.cityinthesky.co.uk/cryptography.html
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:encriptar informacion

Publicado por E.T. (1204 intervenciones) el 29/03/2007 18:38:21
Que tal, pues exiten varios métodos de encriptado, depende de cual quieres usar lo que te voy a pasar a continuación es algo simple pero funciona.

Se trata de darle valores diferentes a cada letra y sustituir estos valores por las respectivas letras del mensaje.

NOTA: ESTE CODIGO ES PARA ENCRIPTAR TEXTO, NO ARCHIVOS

Necesitamos para ejecutar el codigo 2 TMemo, y dos botones.

En el primer botón pondremos lo siguiente

procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
a:string;
begin
a:='';
Memo2.Lines.Clear;
if Trim(memo1.Text)='' then
showmessage('Introduce un texto')
else
begin
for i:=1 to length(Memo1.Text) do begin
if ord(Memo1.Text[i])in[32..255] then
a:=a+encode(Memo1.Text[i])
else
if ord(Memo1.Text[i])=13 then
a:=a+encode(' ');
end;
Memo2.Text:=a;
end;
end;

Lo siguiente en el segundo botón

procedure TForm1.Button2Click(Sender: TObject);
var i,j:integer;
a,b:string;
begin
Memo2.Text:='';
if Trim(memo1.Text)='' then
showmessage('Introduce un texto')
else
begin
i:=0;
b:='';
repeat
a:='';
for j:=1 to 7 do begin
a:=a+(Memo1.Text[i+j])
end;
if Decode(a)=13 then
b:=b+#13
else
b:=b+Chr(Decode(a));
i:=i+7;
gauge1.Progress:=gauge1.Progress+i;
until i=Length(Memo1.Text);
Memo2.Text:=b;
end;
end;

Y las siguientes 2 funciones

function TForm1.Encode(letra: char): string;
begin
case Ord(letra) of
13:if flag then
result:='ü±&ãç>?'
else
result:='õ?Ð<±#Ð';
32:if flag then
result:='ËÆÆøÕ)ß'
else
result:=')Ï=*åãö';
33:if flag then
result:='{[¿]ªä('
else
result:='^&ç=ø)[';
34:if flag then
result:='{=Æ÷Ã>õ'
else
result:='äÝÖ>}^ß';
end;
if (random(9)+1)mod 2=0 then
flag:=false
else
flag:=true;
end;

La función "encode" que te muestro arriba cambia la letra del texto por la cadena de caracteres según su valor ordinal, es decir, si en el texto hay una "@" la función buscará el 64 y regresará la cadena que en ella haya, no las pongo todas por que son 255, tu deberás darle los valores que desees pero sin repetir las cadenas, el tamaño de estas cadenas es a tu consideración solo hay que cambiar en el for del segundo botón el tamaño al que serán las cadenas, las mias son de 7 caracteres y exiten 2 cadenas para cada letra puedes ponerle más si así lo deseas

Ahora la siguiente función

function TForm1.Decode(palabra: string): integer;
begin
if (palabra='ü±&ãç>?')or(palabra='õ?Ð<±#Ð') then
result:=13
else
//El if de arriba fue agregado para caracter "salto de linea" *********************************
if (palabra='ËÆÆøÕ)ß')or(palabra=')Ï=*åãö') then
result:=32
else
if (palabra='{[¿]ªä(')or(palabra='^&ç=ø)[') then
result:=33
else
if (palabra='{=Æ÷Ã>õ')or(palabra='äÝÖ>}^ß') then
result:=34
end;

Ahora hay que hacer lo inverso de la función de arriba, al recibir la función la cadena que le manda el botón2 buscará y regresará un entero el cual es el valor ordinal de la letra que ya habiamos codificado, hay que hacerlo para los 255 caracteres, yo empiezo del 32, puesto que de ahí empiezan los caracteres escribibles, y el 13 para el salto de linea

NOTA: AL CREARSE O AL ACTIVARSE LA FORMA HAY QUE PONER LA SIGUIENTE LINEA

randomize;

hay que declarar tambien la variable en el apartado private

flag:boolean;

Espero esto te sirva de algo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar