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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [BATCH] ¿Como puedo adaptar un texto a otro?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [BATCH] ¿Como puedo adaptar un texto a otro?  (Leído 3,473 veces)
Meine programmen

Desconectado Desconectado

Mensajes: 121



Ver Perfil
[BATCH] ¿Como puedo adaptar un texto a otro?
« en: 8 Abril 2012, 16:53 pm »

Bueno, de primeras no se siquiera si plantee bien la pregunta, asi que mejor me explico. Estoy intentando hacer en batch un programa que encripte texto plano con el cifrado de Vigenère. Para simplificarlo un poco, es una tabla como esta

Se pone la letra del mensaje en el abecedario de arriba y la letra de la clave en el de la derecha, y donde se crucen una y otra es el resultado. Bueno, el caso es que si a cada letra le asignamos un valor por su posicion, se suman los valores de las dos letras, se le resta 1 y si es mayor que el numero de letras del abecedario se le resta el numero de letas del abecedario. El resultado es el valor de la letra que saldria con el cuadro. El problema esta en que no se como hacer que la clave se adapte al mensaje. Por ejemplo, si el mensaje es "Hola amigo" y la clave "Ghj", la clave se tendria que adaptar al mensaje asi:
HOLA AMIGO
GHJG HJGHJ
Y lo mismo si el mensaje fuera mas corto que la clave. Y ademas de adaptar la clave al mensaje tambien esta que tendria que operar con cada letra por separado. Gracias por adelantado


« Última modificación: 8 Abril 2012, 16:58 pm por Meine programmen » En línea

REMEMBER! Reality is an illusion, the universe is a hologram, BUY GOLD! BYE!!

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.708



Ver Perfil
Re: [BATCH] ¿Como puedo adaptar un texto a otro?
« Respuesta #1 en: 8 Abril 2012, 18:39 pm »

no se como hacer que la clave se adapte al mensaje. Por ejemplo, si el mensaje es "Hola amigo" y la clave "Ghj", la clave se tendria que adaptar al mensaje asi:
HOLA AMIGO
GHJG HJGHJ
Y lo mismo si el mensaje fuera mas corto que la clave.

No se si lo he entendido muy bien...

¿Lo que quieres hacer es repetir la clave hasta que tenga el mismo número de caracteres que el mensaje?

Y luego, lo mismo pero al revés? ¿Si la clave tiene mayor longitud que el mensaje, repetir el mensaje hasta adaptarlo a la longitud de la clave?

Pues entonces quizás esto te sirva para adaptarlo a tu idea:





Código:
@Echo OFF
Setlocal enabledelayedexpansion

Set "Mensaje=HOLA AMIGO"
Set "Clave=GHJ"
Call :Mensaje_Length
Call :Clave_Length

If %Mensaje_len% LSS %Clave_len% (Goto :Bucle1) else (Goto :Bucle2)

:Bucle1
IF %Mensaje_len% LSS %Clave_len% (
Set "Mensaje=%Mensaje%%Mensaje%"
Call :Mensaje_Length
Goto :Bucle1
) Else (
Set Mensaje=!Mensaje:~0,%Clave_len%!
)
Goto :Fin

:Bucle2
IF %Clave_len% LEQ %Mensaje_len% (
Set "Clave=%Clave%%Clave%"
Call :Clave_Length
Goto :Bucle2
) Else (
Set Clave=!Clave:~0,%Mensaje_len%!
)
Goto :Fin

:Clave_Length
ECHO %clave%>temp& FOR %%? IN (temp) DO (SET /A Clave_len=%%~z? - 2)
Goto :EOF

:Mensaje_Length
ECHO %Mensaje%>temp& FOR %%? IN (temp) DO (SET /A Mensaje_len=%%~z? - 2)
Goto :EOF

:Fin
Echo Test  | MORE
Echo Mensaje: %Mensaje%
Echo Clave  : %Clave%
pause >NUL


EDITO:  Si necesitas añadir el caracter del espacio, Puedes ayudarte de un contador para comprobar en que posición de la línea está el el espacio: (If "!Mensaje:~%Cont%,1!" EQU " "... )

No quise alargar más el código porque no se si es lo que quieres.
Espero que te sirva.

Salu2.


« Última modificación: 8 Abril 2012, 18:47 pm por EleKtro H@cker » En línea


Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

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