elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Seguridad
| | |-+  Criptografía (Moderador: kub0x)
| | | |-+  Nuevo algoritmo de encriptacion
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Nuevo algoritmo de encriptacion  (Leído 6,954 veces)
byronzapatillas

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Nuevo algoritmo de encriptacion
« en: 27 Agosto 2012, 12:35 pm »

hola amigos, hoy les traigo un pequeño algoritmo de cifrado y desencriptación que puede ser muy útil para cifrar archivos, ejecutables, cadenas de texto y todo lo que quieran. Lo escribí en delphi pero es sencillo de entender el código:

Función para cifrar
Código:
function cifrar(cadena: String; Key: Integer): String;
var
i:integer;
begin
   Result:='';
   for i:=1 to Length(cadena) do
   begin
    RandSeed:= key*i+length(cadena);
    if i mod 2= 0 then
       Result:=Result+Chr(ord(cadena[i]) xor (key*i+random(512)+length(cadena))+i)
    else
       Result:=Result+Chr(ord(cadena[i]) xor (key*i*random(1024)-length(cadena))-randseed)  ;
    end;
end;

Ahora vamos con la función para descifrar:

Código:

function descifrar(cadena: String; Key: Integer): String;
var
i:integer;
begin
   Result:='';
   for i:=1 to Length(cadena) do
   begin
    RandSeed:= key*i+length(cadena);
    if i mod 2= 0 then
       Result:=Result+Chr((ord(cadena[i])-i) xor (KEY*i+random(512)+length(cadena)))
    else
       Result:=Result+Chr((ord(cadena[i])+randseed) xor (KEY*i*random(1024)-length(cadena)))  ;
    end;
end;

Este algoritmo se basa en el cifrado XOR combinado con trasposición, haciendo de él un fuerte método de cifrado. A ver si le echan un vistazo e intentan mejorarlo o buscan posibles vulnerabilidades. Saludos!!


En línea

byronzapatillas

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Nuevo algoritmo de encriptacion
« Respuesta #1 en: 27 Agosto 2012, 13:04 pm »

comentar no cuesta!! =)


En línea

byronzapatillas

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Nuevo algoritmo de encriptacion
« Respuesta #2 en: 27 Agosto 2012, 13:49 pm »

hola de nuevo, he mejorado las funciones de cifrar y descifrar para que la pass sea alfa numérica:
Código:

function cifrar(cadena, Key: string): String;
var
i,j:integer;
temp:integer;
begin
   Result:='';
   for i:=1 to Length(cadena) do
   begin
    for j:=1 to length(key) do
    begin
      temp:= temp + ord(key[i]) + j mod i;
    end;
    Randseed:= temp*i+length(cadena);
    if i mod 2= 0 then
       Result:=Result+Chr(ord(cadena[i]) xor (temp*i+random(512)+length(cadena))+i)
    else
       Result:=Result+Chr(ord(cadena[i]) xor (randseed*i*random(1024)-length(cadena))-randseed)  ;
    end;
end;

function descifrar(cadena, Key: string): String;
var
i,j:integer;
temp:integer;
begin
   Result:='';
   for i:=1 to Length(cadena) do
   begin
    for j:=1 to length(key) do
    begin
      temp:= temp + ord(key[i]) + j mod i;
    end;
    Randseed:= temp*i+length(cadena);
    if i mod 2= 0 then
       Result:=Result+Chr((ord(cadena[i])-i) xor (temp*i+random(512)+length(cadena)))
    else
       Result:=Result+Chr((ord(cadena[i])+randseed) xor (randseed*i*random(1024)-length(cadena)))  ;
    end;
end;


Ejemplo de uso:

Código:
showmessage(cifrar('hola mundo', 'estaesmypass')); //el resultado seria: Þ‘)x›vïJù

showmessage(descifrar('Þ‘)x›vïJù', 'estaesmypass')); //el resultado seria: 'hola mundo'

Se agradecen los comentarios
En línea

APOKLIPTICO


Desconectado Desconectado

Mensajes: 3.871


Toys in the attic.


Ver Perfil
Re: Nuevo algoritmo de encriptacion
« Respuesta #3 en: 27 Agosto 2012, 17:08 pm »

Bueno, es un algoritmo de cifrado que utiliza un keystream basado en un generador pseudoaleatorio, pero cuál estás utilizando?? Si usas el que viene con la librería del lenguaje de programacion, te voy diciendo que no es seguro, ya que sería vulnerable a un ataque known-plaintext. O simplemente si hubiese alguna manera de conseguir el keystream, se podría conseguir una clave equivalente cuya complejidad sería de 2^32 (un seed DWORD).

Saludos
APOKLIPTICO.
En línea

AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines