GilgHCode V1

Iniciado por BlacKGilgamesH, 15 Septiembre 2010, 21:12 PM

0 Miembros y 1 Visitante están viendo este tema.

BlacKGilgamesH

Hola, en estos dias he estado tratando de hacer un "algoritmo" de encriptacion, y pues, finalmente he logrado algo, que es el GilgHCode, algo simple pero efectivo, que genera tres tipos de Hash (por asi decirlo), uno con partes de la misma cadena, otro numerico, y otro en texto (sin tener que ver con el original).

La verdad me costo un poco lograr que funcionara, pero aqui se los dejo.

@echo off
setlocal enabledelayedexpansion ENABLEEXTENSIONS
::::::::::::::::::::::::::
::GilgHCode Generator V1::
::::::By GilgamesHCo::::::
::::::::::::::::::::::::::
:ini
cls
set/p "cadena=Ingrese cadena> "
if not defined cadena goto:ini
set cadena=%cadena: =%
call:txt2asc %cadena%
call:dec2oct %asc%
call:split %oct%
call:long %cadena%
call:gilghcode
call:txt2num
call::num2txt
cls
echo Hash con el Texto: %string%
echo Hash Numerico: %number%
echo Hash: %hash%
echo Hash con el Texto: %string%>> hash_log.txt
echo Hash Numerico: %number%>> hash_log.txt
echo Hash: %hash%>> hash_log.txt
pause>nul
exit
:txt2asc
set asc=%*
set num=1
for %%i in (a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
        call set asc=%%asc:%%i=!num!%%
        set/a num+=1
)
goto:eof

:dec2oct
if not defined nu (
        set nu=%1
)
set/a rest=nu %% 8
set/a nu=nu/8
set oct=%rest%%oct%
if %nu% GTR 0 (
        goto:dec2oct
)
goto:eof


:split
if not defined pa (
        set "pa=%*"
        set pal=%*
)
set "pa=%pa:~1%"
set /a co+=1
if defined pa (goto:split)
for /l %%_ in (0,2,%co%) do (
        call set split=%%split%% %%pal:~%%_,2%%
)
set split=%split:~1%
goto:eof
:gilghcode
set string=%split%
for %%a in (%split%) do (
        set chr=%%a
        set/a x=chr %% long
        set/a y=x/2
        call call set string=%%%%string:!chr!=%%cadena:~!y!,!x!%%%%%%
)
set string=%string: =%
goto:eof
:long
SET "STRING=%~1"
IF NOT DEFINED STRING EXIT/B 1
IF "%TMPVAR%"=="" SET/A CONT=0
CALL SET "VAR=%%STRING:~,%CONT%%%"
IF NOT "%VAR%"=="%STRING%" (
        SET "TMPVAR= "
        SET/A CONT+=1
        CALL %0 "%~1") ELSE (
        CALL SET LEN=%%CONT%%)
SET "long=%LEN%"
goto:eof
:txt2num
set number=%string%
set num=0
for %%i in (a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
        call set number=%%number:%%i=!num!%%
        set/a num+=1
)
goto:eof
:num2txt
set hash=%number%
set num=0
for %%i in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do (
        call set hash=%%hash:!num!=%%i%%
        set/a num+=1
)
goto:eof


Y para finalizar  ;D como reto les dejo un hash para ver si pueden decirme de que cadena es ^^.

CitarHash con el Texto: natonteriaeresuneacesunaacesunaacesunaacesunaacesuna
Hash Numerico: 13019141319417804174182013402418201300241820130024182013002418201300241820130
Hash: bdabjbebdbjebhiaebhebicabdeacebicabdaacebicabdaacebicabdaacebicabdaacebicabda

Saludos ^^

PD:Las respuestas sobre el reto por MP  ;D

leogtz

Mejora la indentación.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

flony

interesante  ;D ta bueno para ocultar cosas  :P
si un problema no tiene solucion entonces no es un problema...es algo inevitable