elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 00:43  


Tema destacado: Grupo de Facebook de elhacker.net

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  [C] Variación cifrado ROT.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [C] Variación cifrado ROT.  (Leído 463 veces)
The Swash

Conectado Conectado

Mensajes: 104


Programmer


Ver Perfil WWW
[C] Variación cifrado ROT.
« en: 3 Octubre 2011, 04:13 »

Buenas noches,
Creo que a Zero le había comentado de mi idea de darle una pequeña variación al cifrado ROT común.

Idea:
  • Utilizar una contraseña numérica con la cual se hará la rotación.
  • Se operará en bloques igual a la longitud de números de la contraseña.
  • Individualmente actuará cada número a la hora de cifrar.
  • Si el dígito actual es menor que 5 se suma, de lo contrario se resta.
  • El tercer parámetro es para evitar prácticamente replicar la función para descifrar.

Les dejo un pequeño ejemplo, lo pueden adaptar y optimizar. Si quieren adaptarlo a binarios deberán añadir comprobación del límite ASCII y no usar strlen.

Código
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
char * ROTPassword(char * String, int password,int descifrar);
 
 
int main()
{
   printf("%s ", ROTPassword("hsec",152,0));
   printf("%s ", ROTPassword("jnfe",152,1));
   getchar();
   return 0;
}
 
char * ROTPassword(char * String, int password, int descifrar)
{
   int array[10] = {0};
   int passcopy = password, counter = 0,i,strlength, passlength = 0;
   char * cifrado;
 
   strlength = strlen(String);
   while(passcopy >= 1)
   {
       array[counter] = (passcopy % 10);
       passcopy /= 10;
       counter++;
   }
 
   cifrado = (char*) malloc(strlength+1);
   memset(cifrado,0,strlength+1);
 
   for (i = 0; i < strlength; i++)
   {
       if (array[passlength] < 5)
       {
           (descifrar == 1)?cifrado[i] = String[i] - array[passlength]: (cifrado[i] = String[i] + array[passlength]);
       }
       else
       {
           (descifrar == 1)?cifrado[i] = String[i] + array[passlength]: (cifrado[i] = String[i] - array[passlength]);
       }
       passlength++;
       if (passlength >= counter) passlength = 0;
 
   }
 
   return cifrado;
}

Un saludo, Gracias Zero.


En línea
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Cifrado
Desafíos - Wargames
Neobius 0 1,391 Último mensaje 1 Enero 2006, 19:18
por Neobius
AYUDA con variacion en frecuencia de metronomo
Electrónica
ben9 1 853 Último mensaje 4 Enero 2006, 20:52
por botboat
Variación térmica y nivel de señal de redes.
Hacking Wireless
longits 6 661 Último mensaje 4 Junio 2006, 02:05
por o2T7f6j2
Variacion respecto al calor?
Materiales y equipos
Loveinhouse 5 989 Último mensaje 6 Abril 2008, 18:55
por Spanslus9mm
tengo variacion en velocidad de tarjetas wifi????
Hacking Wireless
SHACK 8 1,632 Último mensaje 3 Septiembre 2010, 13:33
por AlexAltea
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines