Autor Tema: CryptoSmart v 2  (Leído 161 veces)

SmartGenius

  • Moderador
  • Mensajes: 62
  • Corp. 2010
    • Ver Perfil
CryptoSmart v 2
« : agosto 20, 2010, 03:37:12 pm »
Un nuevo algoritmo critografico simple, que he ideado para ser utiizado en batch.


El codigo codifica una cadena cualquiera, que use solo letras o numeros, y genera un HASH normal, y un Hash Resumido con la misma longitud que la cadena inicial.

Código: (dos) [Seleccionar]
@Echo off
title CryptoSmart v 2
setlocal enabledelayedexpansion

::CryptoAlgorithm v 2
::Coded by SmartGenius

Set "Dc=zxcvbnmasdfghjklqwertyuiopQWERTYUIOPASDFGHJKLZXCVBNM"

:Main
Set /p "String= Enter data > "
If Not Defined String Goto :Main
Call :StrLen String
Echo. Encoding...please wait.

:Encode
Set /a "Ls=String.Len-1"
For /l %%p in (0,1,%Ls%) do (
Set "Ts%%p=!String:~%%p,1!"
Call :LtN !Ts%%p! TsnP%%p
Call :C.A !TsnP%%p! Tv%%p
)
Set "Enc=%String%"
Set "Hash=%String%"
For /l %%q in (0,1,%Ls%) do (
Set /a "R=!TsnP%%q!*!Tv%%qTp!"
Set /a "Rm=(!TsnP%%q!*!Tv%%qTp!)%%String.Len"
Call Set "Hash=%%Hash:!Ts%%q!=!R!%%"
Call Set "Enc=%%Enc:!Ts%%q!=!Rm!%%"
)
Echo.
Echo. Init String  = %String%
Echo. Resumed Hash = %Enc%
Echo. Result Hash  = %Hash%
Echo.
Pause
Exit

:LtN
For /l %%l in (0,1,51) do (
If "!Dc:~%%l,1!"=="%~1" (
Set "%~2=%%l"&Goto :Eof
))
Set "%~2=%~1"
Goto :Eof

:C.A
Set "L=%~1"
Set /a "N=1","C=0"
:C.B
Set /a "D=0"
For /l %%M in (1,1,%N%) do (
Set /a "O=%N%%%%%M"
If !O! equ 0 Set /a "D+=1")
If %D% equ 2 (
Set /a "C+=1")
If %C% equ %L% Set "%~2Tp=%N%"&Goto :Eof
Set /a "N+=1"
Goto :C.B

:StrLen
Set "%1.str=!%1!"
Set "%1.len=0"
:StrLen.Loop
If not defined %1.str Goto :Eof
Set /a "%1.len+=1"
Set "%1.str=!%1.str:~1!"
Goto :StrLen.Loop

He tratado en lo posible de que no existan colisiones, con cadenas similares...


La posibilidad de un desencriptador la veo muy dificil debido al sistema de calculo que utiliza, parecido a metodos de encriptacion muy conocidos. Comentarios y sugerencias son bien recibidos :D

Saludos.  8)
« Última Modificación: agosto 23, 2010, 01:52:56 pm por SmartGenius »


Phicar

  • :P
  • Administrador
  • Mensajes: 283
  • (1+sqrt(5))/2
    • MSN Messenger - diego_villahacker@hotmail.com
    • Ver Perfil
    • Phicar's Blog
    • Email
Re: CryptoSmart v 2
« Respuesta #1 : agosto 20, 2010, 08:45:56 pm »
Puedes escribir la formula en terminos de otro lenguaje o en terminos matematicos concisos? quiero ver si la podemos devolver o si es vulnerable ;)

:)
:)

my.opera.com/phicar

SmartGenius

  • Moderador
  • Mensajes: 62
  • Corp. 2010
    • Ver Perfil
Re: CryptoSmart v 2
« Respuesta #2 : agosto 23, 2010, 09:52:34 am »
Puedo comentarte algo por privado, el codificador esta hecho especialmente para un reto, la formula que usa es de un tal "Euclides", y el codigo se puede modificar un poco para hacerlo bien dificil de crackear, pero de momento se puede hacer el decodificador, siempre que le agarren el tiro a la formula  ;D


Phicar

  • :P
  • Administrador
  • Mensajes: 283
  • (1+sqrt(5))/2
    • MSN Messenger - diego_villahacker@hotmail.com
    • Ver Perfil
    • Phicar's Blog
    • Email
Re: CryptoSmart v 2
« Respuesta #3 : agosto 23, 2010, 10:55:40 am »
mi problema es el lenguaje...eso parece haskell ofuscado xDDD..pero por las imagenes tengo ciertas teorias..pero aun asi tengo que tener el code...asi que voy a estudiar batch y cuando lo saque lloraras amigo xDDD..

Euclides, mmm..suena a RSA xDDD
:)

my.opera.com/phicar

SmartGenius

  • Moderador
  • Mensajes: 62
  • Corp. 2010
    • Ver Perfil
Re: CryptoSmart v 2
« Respuesta #4 : agosto 23, 2010, 01:57:27 pm »
el que esta arriba es el que comente del reto que hay que resolver en el Wargame de CodeMakers, el verdadero te lo pongo aqui, ese si lo creo mas dificil de descifrar...

Código: (dos) [Seleccionar]
@Echo off
title CryptoSmart v 2 Full
setlocal enabledelayedexpansion

::CryptoAlgorithm v 2
::Coded by SmartGenius

Set "Dc= zxcvbnmasdfghjklqwertyuiopQWERTYUIOPASDFGHJKLZXCVBNM"

:Main
Set /p "String= Enter data > "
If Not Defined String Goto :Main
Set "String= %String%"
Call :StrLen String
Echo. Encoding...please wait.

:Encode
Set /a "Ls=String.Len-1"
For /l %%p in (1,1,%Ls%) do (
Set "Ts%%p=!String:~%%p,1!"
Call :LtN !Ts%%p! TsnP%%p
Call :C.A !TsnP%%p! Tv%%p
)
Set "Enc=%String%"
Set "Hash=%String%"
For /l %%q in (1,1,%Ls%) do (
Set /a "R=%%q*!TsnP%%q!*!Tv%%qTp!"
Set /a "Rm=(%%q*!TsnP%%q!*!Tv%%qTp!)%%String.Len"
Call Set "Hash=%%Hash:!Ts%%q!=!R!%%"
Call Set "Enc=%%Enc:!Ts%%q!=!Rm!%%"
)
Echo.
Echo. Init String  = %String%
Echo. Resumed Hash = %Enc%
Echo. Result Hash  = %Hash%
Echo. Result Hash  = %Hash%>dump.txt
Echo.
Pause
Exit

:LtN
For /l %%l in (0,1,51) do (
If "!Dc:~%%l,1!"=="%~1" (
Set "%~2=%%l"&Goto :Eof
))
Set "%~2=%~1"
Goto :Eof

:C.A
Set "L=%~1"
Set /a "N=1","C=0"
:C.B
Set /a "D=0"
For /l %%M in (1,1,%N%) do (
Set /a "O=%N%%%%%M"
If !O! equ 0 Set /a "D+=1")
If %D% equ 2 (
Set /a "C+=1")
If %C% equ %L% Set "%~2Tp=%N%"&Goto :Eof
Set /a "N+=1"
Goto :C.B

:StrLen
Set "%1.str=!%1!"
Set "%1.len=0"
:StrLen.Loop
If not defined %1.str Goto :Eof
Set /a "%1.len+=1"
Set "%1.str=!%1.str:~1!"
Goto :StrLen.Loop

No es RSA, ya quisiera yo xD..es algo mas simple, una funcion matematica basica, que yo codee hace un tiempo para otro reto y aqui la he implementado, ya no puedo dar mas pistas :d

Si me das una funcion matematica con la cual pueda implementar RSA podria intentar hacerlo en batch ;)

Saludos.

PD: Si sacas el decodificador para el primer codigo, no lo postees, pasate por el reto ;)