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
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [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 2,134 veces)
The Swash

Desconectado Desconectado

Mensajes: 194


Programmer


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

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
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. char * ROTPassword(char * String, int password,int descifrar);
  6.  
  7.  
  8. int main()
  9. {
  10.    printf("%s ", ROTPassword("hsec",152,0));
  11.    printf("%s ", ROTPassword("jnfe",152,1));
  12.    getchar();
  13.    return 0;
  14. }
  15.  
  16. char * ROTPassword(char * String, int password, int descifrar)
  17. {
  18.    int array[10] = {0};
  19.    int passcopy = password, counter = 0,i,strlength, passlength = 0;
  20.    char * cifrado;
  21.  
  22.    strlength = strlen(String);
  23.    while(passcopy >= 1)
  24.    {
  25.        array[counter] = (passcopy % 10);
  26.        passcopy /= 10;
  27.        counter++;
  28.    }
  29.  
  30.    cifrado = (char*) malloc(strlength+1);
  31.    memset(cifrado,0,strlength+1);
  32.  
  33.    for (i = 0; i < strlength; i++)
  34.    {
  35.        if (array[passlength] < 5)
  36.        {
  37.            (descifrar == 1)?cifrado[i] = String[i] - array[passlength]: (cifrado[i] = String[i] + array[passlength]);
  38.        }
  39.        else
  40.        {
  41.            (descifrar == 1)?cifrado[i] = String[i] + array[passlength]: (cifrado[i] = String[i] - array[passlength]);
  42.        }
  43.        passlength++;
  44.        if (passlength >= counter) passlength = 0;
  45.  
  46.    }
  47.  
  48.    return cifrado;
  49. }

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
AYUDA con variacion en frecuencia de metronomo
Electrónica
ben9 1 2,697 Último mensaje 4 Enero 2006, 20:52 pm
por botboat
Variacion respecto al calor?
Materiales y equipos
itek 5 3,175 Último mensaje 6 Abril 2008, 18:55 pm
por Spanslus9mm
tengo variacion en velocidad de tarjetas wifi????
Hacking Wireless
SHACK 8 5,358 Último mensaje 3 Septiembre 2010, 13:33 pm
por AlexAltea
¿Medir variación de una serie? ¿obtener máxima variación?
Programación General
Tachikomaia 4 3,415 Último mensaje 11 Septiembre 2019, 02:09 am
por Tachikomaia
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines