Título: [Reto Batch] cifrado caesar Publicado por: Eleкtro en 6 Mayo 2012, 13:11 pm Aquí pueden comentar todo lo que quieran, sus dudas, avances o soluciones acerca del siguiente reto:
Reto Nº 10 Nombre: Cifrado Caesar (Elektro H@cker) Dificultad: 7/10 Objetivo: Crea un bat que pida una palabra/frase, En fin, Texto. Y séa capaz de encriptarlo Y DESENCRIPTARLO por el método CAESAR de deslizamiento de caracteres. Indicaciones: El bat debe tener una opción para definir el shift del cifrado, Es decir, El número de veces que se deslizará cada caracter hacia la derecha. Ejemplo: (http://img23.imageshack.us/img23/3342/prtscrcapture3q.jpg) (http://img94.imageshack.us/img94/1649/prtscrcapturegp.jpg) (http://img528.imageshack.us/img528/4239/prtscrcapture4q.jpg) (http://img525.imageshack.us/img525/1781/prtscrcapture2g.jpg) Solución: Pedir por mensaje privado Título: Re: [Reto Batch] cifrado caesar Publicado por: ELVJop en 6 Mayo 2012, 15:21 pm 7 de difultidad?? Tanto? Voy a probar... Una cosa la palabra es obligatorio poneral gunta o puedo pedir que se ponga por espacios la letra?
Título: Re: [Reto Batch] cifrado caesar Publicado por: Eleкtro en 6 Mayo 2012, 15:26 pm la palabra es obligatorio poneral gunta o puedo pedir que se ponga por espacios la letra? Debe aceptar cualquier frase introducida por el usuario.. ya tenga espacios o no salu2 Título: Re: [Reto Batch] cifrado caesar Publicado por: Runex en 6 Mayo 2012, 15:40 pm 7 de difultidad?? Tanto? Voy a probar... Una cosa la palabra es obligatorio poneral gunta o puedo pedir que se ponga por espacios la letra? Te aviso que es más complicado de lo que te piensas con el shift indicado por el usuario, yo lo hice en Python y ya te digo que lleva tu tiempo Título: Re: [Reto Batch] cifrado caesar Publicado por: ELVJop en 6 Mayo 2012, 16:04 pm Que va es facilito ya lo tengo pero hay algo que no esta bien porque me da problemas con cosas de menos de 2 letras i con algun limite maximo que todabian o se.
Título: Re: [Reto Batch] cifrado caesar Publicado por: Runex en 6 Mayo 2012, 16:07 pm Que va es facilito ya lo tengo pero hay algo que no esta bien porque me da problemas con cosas de menos de 2 letras i con algun limite maximo que todabian o se. Jaja, uno de los problemas está en el límite, a mi me pasó lo mismo :) Título: Re: [Reto Batch] cifrado caesar Publicado por: ELVJop en 6 Mayo 2012, 16:27 pm Teniendo en cuenta que batch es mas lento a tu te va bien? Porque a mi me va pero tarda un monton parte de que me chupa el 40% de la CPU...
Título: Re: [Reto Batch] cifrado caesar Publicado por: Eleкtro en 6 Mayo 2012, 16:30 pm Teniendo en cuenta que batch es mas lento a tu te va bien? Porque a mi me va pero tarda un monton parte de que me chupa el 40% de la CPU... Algo estarás haciendo indebidamente :-/. Batch es lento, Pero la solución que yo hice no tarda ni 2 segundos. Investiga hasta que halles el modo! :P salu2 Título: Re: [Reto Batch] cifrado caesar Publicado por: ELVJop en 6 Mayo 2012, 16:36 pm Te lo mando por MP me parece que lo corregui... pero mucha info de internet tube que sacar no era tan facil como parecia...
Título: Re: [Reto Batch] cifrado caesar Publicado por: Eleкtro en 6 Mayo 2012, 16:52 pm Te lo mando por MP me parece que lo corregui... pero mucha info de internet tube que sacar no era tan facil como parecia... Muy mal, ELVJop. Solución no válida. Solo le has modificado 4 cosas para que parezca otro code. Al menos podrías haberte fijado un poco, Esto es lo que pasa cuando copias directamente desde el code con la sintaxis de pastebin, y no desde el "RAW Paste Data ": Código: Set "Char=!palabra2:~% class="re2">Next_char_palabra2%,1!" PD: Obviamente, No funciona. 7 de difultidad?? Tanto? Voy a probar... Si te parece tán fácil, Prueba sin copiar. EDITO: Bueno, He hecho todas las soluciónes privadas, Así no copian más codes, Que no se porque se empeñan en copiar si esto no es una competición ni hay premio... Salu2. Título: Re: [Reto Batch] cifrado caesar Publicado por: raul338 en 6 Mayo 2012, 17:27 pm Nunca use batch :P pero para los retos, podrías hacer como en vb, postear la solución después de un tiempito (la típica: entrego después de que alguien entregue primero :xD)
[offtopic] No sabia que eras moderador: Felicidades! :P (no te hicieron o no vi un post que diga esto :xD) [/offtopic] Título: Re: [Reto Batch] cifrado caesar Publicado por: Eleкtro en 6 Mayo 2012, 17:31 pm Nunca use batch :P pero para los retos, podrías hacer como en vb, postear la solución después de un tiempito (la típica: entrego después de que alguien entregue primero :xD) Ya no importa, las hice privadas así ya nadie copia xDNo sabia que eras moderador: Felicidades! :P (no te hicieron o no vi un post que diga esto :xD) Gracias, GENIO de Ruby! :PEs un placer verte de nuevo por el foro jeje Salu2! Título: Re: [Reto Batch] cifrado caesar Publicado por: 79137913 en 8 Mayo 2012, 16:31 pm HOLA!!!
100% codeado por mi no como otros chantas que andan dando vueltas por estos retos (no raul vos no XD) No me pregunten porque pero parece que el sistema de seguridad analiza mi codigo como si fuera un intento de XSS por ende me suplanta palabras y lo deja sin funcionalidad aca el codigo completo: http://pastebin.com/ZjchPt0q GRACIAS POR LEER!!! Título: Re: [Reto Batch] cifrado caesar Publicado por: BatchianoISpyxolo en 8 Mayo 2012, 17:54 pm Yo lo anduve codeando el otro día pero me cansé y ahí lo tengo esperando... Ahora ando con Aplicaciones lineales y Bases xD
Título: Re: [Reto Batch] cifrado caesar Publicado por: -- KiLiaN -- en 8 Mayo 2012, 18:24 pm No me funciona tu código 79137913...cuando le doy a cifrar, escribo la frase y el shift y sólo me muestra el número que haya puesto de desplazamiento.
PD: Aqui se te coló algo :silbar: Citar < span="">style="color: #448888;"><>%% Título: Re: [Reto Batch] cifrado caesar Publicado por: 79137913 en 8 Mayo 2012, 18:54 pm HOLA!!!
No me funciona tu código 79137913...cuando le doy a cifrar, escribo la frase y el shift y sólo me muestra el número que haya puesto de desplazamiento. PD: Aqui se te coló algo :silbar: No me pregunten porque pero parece que el sistema de seguridad analiza mi codigo como si fuera un intento de XSS por ende me suplanta palabras y lo deja sin funcionalidad aca el codigo completo: http://pastebin.com/ZjchPt0q P.D: solo con mayusculas, si quieren minusculas habria que agregar otro bucle mas sin sentido. GRACIAS POR LEER!!! Título: Re: [Reto Batch] cifrado caesar Publicado por: -- KiLiaN -- en 8 Mayo 2012, 23:10 pm Ahora si funciona pero me aparece el desplazamiento y luego la palabra codificada (correctamente).
Título: Re: [Reto Batch] cifrado caesar Publicado por: 79137913 en 9 Mayo 2012, 02:53 am HOLA!!!
Justamente, es para poder decodificarla luego. GRACIAS POR LEER!!! Título: Re: [Reto Batch] cifrado caesar Publicado por: Eleкtro en 9 Mayo 2012, 12:42 pm No me funciona tu código 79137913...cuando le doy a cifrar, escribo la frase y el shift y sólo me muestra el número que haya puesto de desplazamiento. PD: Aqui se te coló algo :silbar: Ya todos sabemos que hay errores en la sintaxis de batch al pegar código en Pastebin o aqui en el foro si el code tiene habilitado la expansion de variables y hay exclamaciones en el code !!!!!. PD: Para algo está la opción de copiar el code desde el "RAW Paste Data" de pastebin. Salu2! EDITO: Ok no vi lo que comentaste de las mayusculas! PD: No es dificil hacerlo andar con mayusculas/minusculas, Os dejo una pista de como lo codeé yo: Código
Salu2! Título: Re: [Reto Batch] cifrado caesar Publicado por: BatchianoISpyxolo en 10 Mayo 2012, 17:59 pm Ya todos sabemos que hay errores en la sintaxis de batch al pegar código en Pastebin o aqui en el foro si el code tiene habilitado la expansion de variables y hay exclamaciones en el code !!!!!. PD: Para algo está la opción de copiar el code desde el "RAW Paste Data" de pastebin. Salu2! EDITO: Ok no vi lo que comentaste de las mayusculas! PD: No es dificil hacerlo andar con mayusculas/minusculas, Os dejo una pista de como lo codeé yo: Código
Salu2! Yo en el "charlist" no lo hice sin números, habrá que incluirlos xD y me falta descifrar Título: Re: [Reto Batch] cifrado caesar Publicado por: leogtz en 11 Mayo 2012, 05:14 am Si tengo tiempo este fin de semana lo resuelvo, la universidad no me deja en paz :s
Título: Re: [Reto Batch] cifrado caesar Publicado por: SmartGenius en 11 Mayo 2012, 18:08 pm Hace ya un tiempo habia publicado en el Blog un codigo de implementacion del Cifrado Cesar, es algo basico, pero cumple con su proposito.
Código: @Echo Off&Title Caesar Crypt - SmartGenius Setlocal Enabledelayedexpansion :Init Set /p "Text=Enter Text >" If Not Defined Text Goto :Init Set /p "Rot=Enter Seed >" If Not Defined Rot Goto :Init If 26 LEQ %Rot% Goto :Init Call :Crypt.A Text Rot Echo. Echo. Result: %Text% Echo. Pause Exit :Crypt.A If not defined %1 Goto:Eof Set "c=" Set "d=ABCDEFGHIJKLMNOPQRSTUVWXYZ" :Crypt.B Set "chr=!%1:~,1!" For /l %%l in (0 1 26) do ( if "!chr!" equ " " ( Set "%1=!%1:~1!" Set "c=!c! " Goto :Crypt.B) if "!chr!" equ "!d:~%%l,1!" ( set /a "x=(~((%%l-26)*-1)+!%~2!)+1" call set "c=!c!%%d:~!x!,1%%" )) Set "%1=!%1:~1!" If defined %1 goto:Crypt.B Set "%1=!c!" Goto :Eof Es la implementacion normal, en mayusculas, con una rotacion maxima de 25, se puede ampliar el diccionario y un par de modificaciones en los limites para que funcione como ustedes quieren :) Saludos. Título: Re: [Reto Batch] cifrado caesar Publicado por: Eleкtro en 11 Mayo 2012, 19:15 pm Hace ya un tiempo habia publicado en el Blog un codigo de implementacion del Cifrado Cesar, es algo basico, pero cumple con su proposito. Una solución de uno de los más grandes de Batch. ;-) Título: Re: [Reto Batch] cifrado caesar Publicado por: BatchianoISpyxolo en 24 Mayo 2012, 01:59 am Sí, el código se puede optimizar xD pero no sé por qué tuve muchos problemas por los argumentos y bueno ahora es lo que es pero al menos funciona correctamente.
¡Saludos! Código: :: CIFRADO CAESAR - BATCHIANO :) @echo off setlocal enabledelayedexpansion set "CHARS= abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" :MAIN cls echo. echo CIFRADO CAESAR - BATCHIANO :) echo. echo. 1. cifrar echo. 2. descifrar echo. 3. salir echo. set /p op=Opcion: if not defined op ( goto :main ) else ( if !op!==1 ( goto :cifrar ) else if !op!==2 ( goto :descifrar ) else ( exit/b ) ) :cifrar cls set /p desp=Desplazamiento lateral: set /p texto=Texto a cifrar: for %%? in (desp,texto) do if not defined %%? goto :cifrar call :analizar "e" "!texto!" !desp! echo ------------------- echo. Texto cifrado: !cad! pause>nul goto :eof :descifrar cls echo El formato para descifrar es [desplazamiento]texto - Ejemplo: 2razqnq set /p texto=Texto a descifrar: if not defined texto goto :descifrar call :analizar "d" "!texto!" echo ------------------- echo. Texto descifrado: !cad! pause>nul goto :eof :analizar set t=%~2 set TYPE=%~1 if "!TYPE!"=="e" ( set /a d=%3 set cad=!d! set /a i=0 ) else ( set /a i=1 set "cad=" set shift=!t:~0,1! ) ::while :while if "!t:~%i%,1!" NEQ "" ( call :find_char "!t:~%i%,1!" "!CHARS!" call :class !return! if "!TYPE!"=="e" ( set /a rd=!return!+!d! ) else ( set /a rd=!return!-!shift! ) if "!CLASS!"=="NONE" ( set "cad=!cad!!t:~%i%,1!" ) else ( if "!CLASS!"=="SPACE" ( set "cad=!cad! " ) else ( if "!TYPE!"=="e" ( call :resize_enc !rd! ) else ( call :resize_dec !rd! ) call :select_char "!CHARS!" !rd! set "cad=!cad!!sc!" ) ) set /a i+=1 goto :while) goto :eof :find_char set C=%~1 set L=%~2 set /a pos=0 :loop if "!C!" NEQ "!L:~%pos%,1!" ( set /a pos+=1 if !pos! LSS 64 (goto :loop) ) set /a return=%pos% goto :eof :select_char set lc=%~1 set key=%2 set sc=!lc:~%key%,1! goto :eof :class if %1 == 0 ( set CLASS=SPACE ) else if %1 GTR 0 ( if %1 LSS 27 ( set CLASS=MIN ) else if %1 LSS 53 ( set CLASS=MAY ) else if %1 LSS 63 ( set CLASS=NUM ) else ( set CLASS=NONE ) ) goto :eof :resize_enc if "!CLASS!"=="MIN" ( if !rd! gtr 26 ( set /a rd-=26 ) ) if "!CLASS!"=="MAY" ( if !rd! gtr 52 ( set /a rd-=26 ) ) if "!CLASS!"=="NUM" ( if !rd! gtr 62 ( set /a rd-=10 ) ) goto :eof :resize_dec if "!CLASS!"=="MIN" ( if !rd! lss 1 ( set /a rd+=26 ) ) if "!CLASS!"=="MAY" ( if !rd! lss 26 ( set /a rd+=26 ) ) if "!CLASS!"=="NUM" ( if !rd! lss 52 ( set /a rd+=10 ) ) goto :eof Título: Re: [Reto Batch] cifrado caesar Publicado por: Binary_Death en 21 Julio 2012, 22:59 pm Dejo aquí lo que hice yo:
Código: @Echo Off setlocal enableextensions enabledelayedexpansion set /p "text=Texto: " set /p "rotn=Desplazamiento: " call:_caesar "%text%" "%rotn%" echo: -Cadena cifrada ^>^> %ret_str% pause 1>nul & exit :_caesar if "%~1" EQU "" goto :EoF set "chr_lst=abcdefghijklmnopqrstuvwxyz" set "string=%~1" & set "ret_str=" for /l %%i in (0,1,25) do set/a c[!chr_lst:~%%i,1!]=%%i set /a cnt=-1 :__loop.a set /a cnt+=1 set "chr=!string:~%cnt%,1!" if not defined chr goto :eof if "%chr%" EQU " " set "ret_str=%ret_str% " & goto :__loop.a set /a "num_cs=(!c[%chr%]!+%~2) %% 26" set "ret_str=%ret_str%!chr_lst:~%num_cs%,1!" goto :__loop.a PD: Ups! Se me olvidó lo de descifrar. Pero da igual, basta con poner la clave en negativo. Por ejemplo, si cifras "hola" con desplazamiento 5, da "mtqf". Si cifras "mtqf" con desplazamiento -5 da "hola". Así que supongo que os sirve igual :P PD2: Funciona tanto con mayúsculas como con minúsculas, pero la cadena cifrada la retorna siempre en minúsculas. |