Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-08-2005
Avatar de DarkByte
DarkByte DarkByte is offline
Miembro
 
Registrado: sep 2003
Ubicación: Desconocido
Posts: 1.322
Poder: 22
DarkByte Va por buen camino
Algoritmo de Encriptacion

Eps...

¿Alguien tiene por ahi algún código de encriptación/desencriptacion que devuelva valores que sean números y letras? Es que ya sabeis lo que pasa al enviar carácteres raros por socket ... sobre todo con indy y demás.

Si puede ser también, que no necesite ningun include... que se maneje con el sistema :\
__________________
:)
Responder Con Cita
  #2  
Antiguo 07-08-2005
Jan Jan is offline
Miembro
 
Registrado: may 2003
Ubicación: Cádiz
Posts: 90
Poder: 21
Jan Va por buen camino
Hola Darkbyte:

Prueba con LockBox de TurboPower (en sourceforge). Trae algoritmos de cifrado para dar y regalar.
__________________
Guía de Estilo del Foro
Responder Con Cita
  #3  
Antiguo 07-08-2005
Mick Mick is offline
Miembro
 
Registrado: may 2003
Posts: 405
Poder: 21
Mick Va por buen camino
Puedes usar el DCPCrypt , que incluye todo tipo de algoritmos de encriptacion:

http://www.cityinthesky.co.uk/cryptography.html

Aunque para dejar solo caracteres imprimibles basta que uses una codificacion en base64 y listo. En el DCPCrypt trae una unit para codificar en base64.

De todas formas no le veo sentido a lo que pretendes hacer, con indy se pueden enviar cualquier caracter sin ningun problema, y codificarlo en base64 o en lo que sea hara que el sistema vaya mas lento y los paquetes a transmitir ocupen mas de lo necesario.

Saludos
Responder Con Cita
  #4  
Antiguo 10-08-2005
Avatar de DarkByte
DarkByte DarkByte is offline
Miembro
 
Registrado: sep 2003
Ubicación: Desconocido
Posts: 1.322
Poder: 22
DarkByte Va por buen camino
Mick, con las indy no puedes enviar algunos carácteres, lo mismo pasa por irc

De igual forma, yo no trabajo con compos, sino con sockets a pelo... gracias de igual forma por los componentes
__________________
:)
Responder Con Cita
  #5  
Antiguo 10-08-2005
Mick Mick is offline
Miembro
 
Registrado: may 2003
Posts: 405
Poder: 21
Mick Va por buen camino
Cita:
Empezado por DarkByte
Mick, con las indy no puedes enviar algunos carácteres, lo mismo pasa por irc
He usado las indy para multiples proyectos, incluida el envio de paquetes de datos binarios o la transmision de imagenes por streaming, sin necesidad de preprocesar los datos para eliminar caracteres no imprimibles, y todo sin ningun problema. Si tuviese ese problema, no habria usado las indy , y habria utilizado cualquier otro componente o las api de windows a pelo. Porque no seria de recibo tener que hacer mas lento el sistema y consumir mas ancho de banda, porque los componentes tuviesen una limitacion tan extraña.
En cuanto a lo del irc y las indy, es que no son cosas comparables, una cosa es un protocolo (el del irc) que en su definicion indique que solo se deben transmitir tal tipo de caraceres y otra es una serie de componentes de comunicacion con sockets.
Es decir una cosa es que algun componente de las indy que implementa un determinado protocolo de mas alto nivel no permita caracteres raros porque el protocolo lo diga asi, y otra es que no se pudiesen transmitir cualquier valor entre 0 y 255 a traves de un socket.

Saludos
Responder Con Cita
  #6  
Antiguo 14-08-2005
Avatar de DarkByte
DarkByte DarkByte is offline
Miembro
 
Registrado: sep 2003
Ubicación: Desconocido
Posts: 1.322
Poder: 22
DarkByte Va por buen camino
Vaya, vuelvo a necesitar urgentemente el algoritmo que me devuelva solo valores representables en la tabla ascii...para hacer un sistema de clientes irc encriptados.

Lo siento realmente, sé que aquí ayudais sin ánimo de lucro, pero me gustaria que quien lo sepa o tenga alguna idea,me la comente lo antes posible.

Muchisimas gracias.
__________________
:)
Responder Con Cita
  #7  
Antiguo 15-08-2005
Mick Mick is offline
Miembro
 
Registrado: may 2003
Posts: 405
Poder: 21
Mick Va por buen camino
Sigo insistiendo en que utilices el siguiente paquete:

http://www.cityinthesky.co.uk/files/dcpcrypt2.zip

No tienes ni porque instalar los componentes, basta con con descomprimas el zip y simplemente cojas la unit:

DCPbase64.pas

Esa unit solo tiene dos funciones para codificar y descodificar en base 64:

Código:
unit DCPbase64;

interface
uses
  Sysutils;

function Base64EncodeStr(const Value: string): string;
  { Encode a string into Base64 format }
function Base64DecodeStr(const Value: string): string;
  { Decode a Base64 format string }

....
Saludos
Responder Con Cita
  #8  
Antiguo 15-08-2005
Avatar de DarkByte
DarkByte DarkByte is offline
Miembro
 
Registrado: sep 2003
Ubicación: Desconocido
Posts: 1.322
Poder: 22
DarkByte Va por buen camino
Aja, probare con las units, muchas gracias Mick, te cuento que tal me va
__________________
:)
Responder Con Cita
  #9  
Antiguo 15-08-2005
Avatar de DarkByte
DarkByte DarkByte is offline
Miembro
 
Registrado: sep 2003
Ubicación: Desconocido
Posts: 1.322
Poder: 22
DarkByte Va por buen camino
Funciona a la perfección. Gracias Mick, ahí tienes tus 10 puntos
__________________
:)

Última edición por DarkByte fecha: 15-08-2005 a las 21:23:50. Razón: habia escrito "putos" en lugar de "puntos"
Responder Con Cita
  #10  
Antiguo 23-08-2005
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Smile Lo que buscaba

¡Hola a todos!

Cita:
Empezado por Mick
...Sigo insistiendo en que utilices el siguiente paquete:
http://www.cityinthesky.co.uk/files/dcpcrypt2.zip...DCPbase64.pas Esa unit solo tiene dos funciones para codificar y descodificar en base 64...
Cita:
Empezado por David Barton (el autor de la biblioteca)
...DCPcrypt is open source software...
También yo buscaba algo así para decodificar unos campos de texto que fueron codificados en PHP con la función base64_encode.

Gracias.

Un abrazo encriptado.

Al González.
Responder Con Cita
  #11  
Antiguo 20-09-2005
Avatar de Maury Manosalva
Maury Manosalva Maury Manosalva is offline
Miembro
 
Registrado: ago 2005
Posts: 101
Poder: 19
Maury Manosalva Va por buen camino
Unhappy No entiendo como funciona la Encriptacion.. Ayuda

Por favor entendidos en el tema, me pueden hacer el favor y de explicarme como trabajar con este programa para encriptar y desencriptar un archivo.. Nevcesito encriptar un txt y desencriptarlo para un manejo de treeview.. gracias mil.

Maury Manosalva
Responder Con Cita
  #12  
Antiguo 05-11-2005
Luis Castillo Luis Castillo is offline
Miembro
 
Registrado: jun 2003
Ubicación: Colombia
Posts: 102
Poder: 21
Luis Castillo Va por buen camino
De acuerdo

Estoy de acuerdo con el señor Maury. Seria posible que presentaran un vinculo donde narrara un poco sobre las bases de la encriptacion. Veo que hablan de formatos y demas reglas....

Quisiera iniciarme mas en este tema....

Les agradezco mucho


Gracias..
__________________
LK
Responder Con Cita
  #13  
Antiguo 05-11-2005
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
puede ser:

Luis Castillo, aquí en los foros se ha tratado muchas veces este tema... ,es más... me acuerdo que he participado en algunos de ellos). Una simple búsqueda en los foros te resultará de utilidad:
http://www.clubdelphi.com/foros/sear...earchid=356387
http://www.clubdelphi.com/foros/sear...earchid=355898

De todas maneras, se puede saber un poco más si buscas en google:
http://www.google.com.ar/search?hl=e...%BAsqueda&meta=

Lo poco que aprendí de esto lo hice buscando, y buscando....
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #14  
Antiguo 05-11-2005
Avatar de carlocf
carlocf carlocf is offline
Miembro
 
Registrado: oct 2005
Posts: 35
Poder: 0
carlocf Va por buen camino
Saludos a todo el foro

Para aquellos que les interesa la criptologia pueden visitar la pagina www.kriptopolis.com

Saludos
Carlo

Última edición por carlocf fecha: 05-11-2005 a las 16:29:05. Razón: Puse puden en vez de pueden
Responder Con Cita
  #15  
Antiguo 29-09-2014
principiodual principiodual is offline
Miembro
NULL
 
Registrado: ago 2014
Posts: 26
Poder: 0
principiodual Va por buen camino
Cita:
Empezado por Mick Ver Mensaje
Sigo insistiendo en que utilices el siguiente paquete:

http://www.cityinthesky.co.uk/files/dcpcrypt2.zip

No tienes ni porque instalar los componentes, basta con con descomprimas el zip y simplemente cojas la unit:

DCPbase64.pas

Esa unit solo tiene dos funciones para codificar y descodificar en base 64:

Código:
unit DCPbase64;

interface
uses
  Sysutils;

function Base64EncodeStr(const Value: string): string;
  { Encode a string into Base64 format }
function Base64DecodeStr(const Value: string): string;
  { Decode a Base64 format string }

....
Saludos
Buenas amigos, me gustaría hacer uso de ese paquete que habla, pero al dar link me dice que está caído, podría de alguna manera acceder a esa Unit para hacer las pruebas, es que he probado varios metodos de cifrados pero generan caracteres extraños y estoy trabajando con una base de datos de IBM en db2 y todos los caracteres extraños los convierte a cuadritos, por eso me gustaría probar un método que solo cifre con caracteres ascii o alfanúmericos. Si me puede orientar muchas gracias, de todas maneras sigo investigando. Saludos.
Responder Con Cita
  #16  
Antiguo 29-09-2014
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
principiodual

Cita:
Empezado por principiodual
...me gustaría probar un método que solo cifre con caracteres ASCII o Alfanuméricos...


Revisa esta información
Espero sea útil

Nelson.
Responder Con Cita
  #17  
Antiguo 29-09-2014
principiodual principiodual is offline
Miembro
NULL
 
Registrado: ago 2014
Posts: 26
Poder: 0
principiodual Va por buen camino
Cita:
Empezado por nlsgarcia Ver Mensaje
principiodual




Revisa esta información
Espero sea útil

Nelson.
Muchas gracias amigo, a chequear entonces , saludos.
Responder Con Cita
  #18  
Antiguo 29-09-2014
Avatar de pacopenin
pacopenin pacopenin is offline
Miembro
 
Registrado: sep 2010
Ubicación: Asturias
Posts: 382
Poder: 14
pacopenin Va por buen camino
Cita:
Empezado por principiodual Ver Mensaje
Buenas amigos, me gustaría hacer uso de ese paquete que habla, pero al dar link me dice que está caído, podría de alguna manera acceder a esa Unit para hacer las pruebas, es que he probado varios metodos de cifrados pero generan caracteres extraños y estoy trabajando con una base de datos de IBM en db2 y todos los caracteres extraños los convierte a cuadritos, por eso me gustaría probar un método que solo cifre con caracteres ascii o alfanúmericos. Si me puede orientar muchas gracias, de todas maneras sigo investigando. Saludos.
Buenas. El paquete al que te refieres es éste : http://www.cityinthesky.co.uk/opensource/dcpcrypt/

Saludos.
__________________
http://www.gestionportable.com
Responder Con Cita
  #19  
Antiguo 30-09-2014
principiodual principiodual is offline
Miembro
NULL
 
Registrado: ago 2014
Posts: 26
Poder: 0
principiodual Va por buen camino
Cita:
Empezado por pacopenin Ver Mensaje
Buenas. El paquete al que te refieres es éste : http://www.cityinthesky.co.uk/opensource/dcpcrypt/

Saludos.
Muchas gracias amigo, a revisar entonces.
Responder Con Cita
  #20  
Antiguo 01-10-2014
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
principiodual

Cita:
Empezado por principiodual
...me gustaría probar un método que solo cifre con caracteres ASCII o Alfanuméricos...


Revisa este código:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Memo1: TMemo;
    Memo2: TMemo;
    Memo3: TMemo;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  TState = Array[0..3,0..3] of Byte;

var
  Form1: TForm1;

implementation

{$R *.dfm}

// Realiza operaciones matriciales de intercambio de filas
procedure ShiftRows(var State: TState);
var
   i,j,k : Integer;
begin
   for j := 1 to 3 do
   begin
      k := State[0,j];
      State[0,j] := State[1,j];
      State[1,j] := State[2,j];
      State[2,j] := State[3,j];
      State[3,j] := k;
   end;
end;

// Realiza operaciones matriciales de intercambio de columnas
procedure ShiftCols(var State: TState);
var
   i,j,k : Integer;
begin
   for j := 1 to 3 do
   begin
      k := State[j,0];
      State[j,0] := State[j,1];
      State[j,1] := State[j,2];
      State[j,2] := State[j,3];
      State[j,3] := k;
   end;
end;

// Realiza operaciones matriciales inversas de intercambio de filas
procedure InvShiftRows(var State: TState);
var
   i,j,k : Integer;
begin
   for j := 1 to 3 do
   begin
      k := State[3,j];
      State[3,j] := State[2,j];
      State[2,j] := State[1,j];
      State[1,j] := State[0,j];
      State[0,j] := k;
   end;
end;

// Realiza operaciones matriciales inversas de intercambio de columnas
procedure InvShiftCols(var State: TState);
var
   i,j,k : Integer;
begin
   for j := 1 to 3 do
   begin
      k := State[j,3];
      State[j,3] := State[j,2];
      State[j,2] := State[j,1];
      State[j,1] := State[j,0];
      State[j,0] := k;
   end;
end;

// Convierte una cadena de carácteres ASCII a su equivalente Hexadecimal
function StringToHex(S : String): String;
var
   i: Integer;
begin
   for i := 1 to Length(S) do
      Result := Result + IntToHex(Ord(S[i]), 2);
end;

// Convierte una cadena de carácteres Hexadecimal a su equivalente ASCII
function HexToString(S : String): String;
var
   i : Integer;
begin
   for i := 1 to Length(S) do
      if ((i mod 2) = 1) then
         Result := Result + Chr(StrToInt('0x' + Copy(S, i, 2)));
end;

// Cifra un String por medio de una clave con operaciones matriciales y funciones lógicas
function Encode(DataStr, Key : String) : String;
var
   i : Integer;
   AuxStr : String;
   AuxKey : LongWord;
   Src, Dst : TStringStream;
   State : TState;

begin

   Src := TStringStream.Create(DataStr);
   Dst := TStringStream.Create('');

   FillChar(State,Sizeof(State),#0);

   while Src.Read(State,Sizeof(State)) > 0 do
   begin
      ShiftRows(State);
      ShiftCols(State);
      Dst.WriteBuffer(State,Sizeof(State));
      FillChar(State,Sizeof(State),#0);
   end;

   AuxKey := 0;

   for i := 1 to length(Key) do
      AuxKey := (AuxKey + ord(Key[i])) xor Length(Key);

   for i:=1 to length(Dst.DataString) do
      AuxStr := AuxStr + chr(ord(Dst.DataString[i]) xor AuxKey);

   Result := StringToHex(AuxStr);

end;

// Descifra un String por medio de una clave con operaciones matriciales y funciones lógicas
function Decode(DataStr, Key : String) : String;
var
   i : Integer;
   AuxStr : String;
   AuxKey : LongWord;
   Src, Dst : TStringStream;
   State : TState;

begin

   DataStr := HexToString(DataStr);

   Src := TStringStream.Create(DataStr);
   Dst := TStringStream.Create('');

   FillChar(State,Sizeof(State),#0);

   while Src.Read(State,Sizeof(State)) > 0 do
   begin
      InvShiftCols(State);
      InvShiftRows(State);
      Dst.WriteBuffer(State,Sizeof(State));
      FillChar(State,Sizeof(State),#0);
   end;

   AuxKey := 0;

   for i := 1 to length(Key) do
      AuxKey := (AuxKey + ord(Key[i])) xor Length(Key);

   for i:=1 to length(Dst.DataString) do
      AuxStr := AuxStr + chr(ord(Dst.DataString[i]) xor AuxKey);

   Result := AuxStr;

end;

// Llama la función que Cifra una cadena de carácteres
procedure TForm1.Button1Click(Sender: TObject);
begin
   Memo2.Text := Encode(Memo1.Text, Edit1.Text);
end;

// Llama la función que Descifra una cadena de carácteres
procedure TForm1.Button2Click(Sender: TObject);
begin
   Memo3.Text := Decode(Memo2.Text, Edit1.Text);
end;

// Reset los controles del formulario
procedure TForm1.Button3Click(Sender: TObject);
begin
   Edit1.Text := EmptyStr;
   Memo1.Clear;
   Memo2.Clear;
   Memo3.Clear;
end;

end.
El código anterior en Delphi 7 sobre Windows 7 Professional x32, Cifra y Descifra una cadena de caracteres por medio de una clave utilizando operaciones matriciales y funciones lógicas, según se muestra en la siguiente imagen:



Nota: El código propuesto es útil como una opción de cifrado/descifrado de Strings, sin embargo si los requerimientos de la aplicación lo ameritan, te sugiero implementar el algoritmo Advanced Encryption Standard (AES) (Msg #16), el cual a sido adoptado como : El estándar de cifrado por el gobierno de los Estados Unidos.

Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 01-10-2014 a las 09:06:16.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 07:59:46.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi