Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Seguridad (https://www.clubdelphi.com/foros/forumdisplay.php?f=36)
-   -   Necesito una buena clave de encriptación (https://www.clubdelphi.com/foros/showthread.php?t=62854)

LDD 17-01-2009 20:39:16

Necesito una buena clave de encriptación
 
Para aplicación DELPHI, necesito una clave de encriptación y desencriptación, válida tanto para números como para LETRAS, debe poder desencriptarse de manera sencilla (sólo deben aparecer letras y números nunca ottros simbolos).

¿Alguna idea?

Gracias

MiKloSS 17-01-2009 21:14:56

Pues yo no lo he usado pero he oido hablar de MD5, aqui te dejo un enlace... salu2

Código:

http://irsoft.de/web/Delphi-MD5

LDD 17-01-2009 21:24:14

Muchas gracias :) , el MD5 es una clave HASH y yo busco algo más simple para poder desencriptar.

Algo parecido a 0123456 -> ABC32W1

Delphius 17-01-2009 21:54:38

Hola LDD,
El algoritmo de cifrado más sencillo que se puede implementar el el código César. Que lo único que hace es sustituir a la primera letra por la cuarta, la segunda por la quita, la última por la tercera. Es decir:
A -> D
B -> E
Z -> C

Y así se procede cíclicamente.
Por el tema de los números, es muy simple: sólo necesitas asumirlo como si fuera parte del abecedario:

Código:

abcdefghijklmnñopqrstuvwxyz1234567890
defghijklmnñopqrstuvwxyz1234567890abc

¿Se entiende?

Si buscas por cifrado aqui en los foros encontrarás algunos ejemplos simples de algoritmos. En trucomania hay uno bastante sencillo, puedes basarte en él si deseas.

Por otro lado, sin ofender lo que tu buscas el un algoritmo, no una clave. Y a mi modo de ver, el término más adecuado es cifrado.

Saludos,

LDD 17-01-2009 22:10:20

Efectivamente
 
Efectivamente, gracias Delphius, no hay nada como encontrar a quien entiende exactamente lo que uno no es capaz de explicar bien. :o

Muchas gracias de nuevo.
Un saludo

poyo 23-01-2009 01:20:51

mmmm... lo que estás buscando es codificar más que cifrar.

Según la Real Academia Española, codificar es: "Transformar mediante las reglas de un código la formulación de un mensaje."

Es decir, algo así como el algoritmo de César antes mencionado.
También se puede codificar a Hexadecimal, Binario, Mime, etc.

Por otra parte Cifrar, según la Rae, significa: Transcribir en guarismos, letras o símbolos, de acuerdo con una clave, un mensaje cuyo contenido se quiere ocultar.
Es decir, se necesita de algo ajeno al mensaje (clave) para poder "revelar" el mensaje ocultado.

Algoritmos de Cifrado hay muchísimos, como ser Rijndael (AES), blowfish, towfish, 3des, etc...
Igual, el más fácil que conozco es el de Xor: el cual consiste en recorrer byte por byte y hacerle un XOR por un valor (clave).
luego, para, descifrarlo, repertir lo hecho antes (con la misma clave, por supuesto).
La Jedi (JVCL) viene con un componente para crifrado Xor y otro para César; TJvXORCipher y TJvCaesarCipher respectivamente (Unit JvCipher.pas).
ahí se puede chusmear el código.
De todos modos el algoritmo de Xor NO es considerado seriamente para cosas que requieran algo de seguridad... simplemente sirve de ejemplo.
y el César menos.

copio el algoritmo principal del Xor de la Jedi (funciona tanto como para cifrar y descifrar, pues el encode hace lo siguiente)

Código Delphi [-]
procedure TJvXORCipher.Encode(const Key: AnsiString; Buf: PAnsiChar; Size: Cardinal);
begin
  Decode(Key, Buf, Size);
end;

procedure TJvXORCipher.Decode(const Key: AnsiString; Buf: PAnsiChar; Size: Cardinal);
var
  I: Cardinal;
  J: Cardinal;
begin
  if Key <> '' then
  begin
    J := 1;
    for I := 1 to Size do
    begin
      Buf[I-1] := AnsiChar(Ord(Buf[I-1]) xor Ord(Key[J]));
      J := (J mod Cardinal(Length(Key))) + 1;
    end;
  end;
end;

por ahí yo creo que tenía implementada unas funciones de encriptación con xor que las escribí hace unos años. una trabajaba sobre un string y la otra creo que trabajaba directamente sobre un TMemoryStream. si es necesario habría que buscar... :-°

escafandra 23-01-2009 10:36:43

Quizás lo que buscas es esto.

Saludos.


La franja horaria es GMT +2. Ahora son las 11:38:40.

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