PDA

Ver la Versión Completa : Necesito una buena clave de encriptación


LDD
17-01-2009, 20:39:16
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

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:

abcdefghijklmnñopqrstuvwxyz1234567890
defghijklmnñopqrstuvwxyz1234567890abc

¿Se entiende?

Si buscas por cifrado aqui en los foros encontrarás algunos ejemplos simples de algoritmos. En trucomania (http://www.q3.nu/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, 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)


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 (http://delphi.jmrds.com/?q=node/44).

Saludos.