[Perl] Ejemplo de Cifrado Murcielago

Iniciado por BigBear, Noviembre 21, 2014, 10:11:36 AM

Tema anterior - Siguiente tema

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

Un simple ejemplo en Perl sobre como realizar el cifrado Murcielago.

Código: perl

# !usr/bin/perl
# Cifrado Murcielago
# Coded By Doddy Hackman in the year 2014

head();
menu();
copyright();

# Functions

sub head {
    print "\n-- == Cifrado Murcielago == --\n";
}

sub copyright {
    print "\n\n-- == (C) Doddy Hackman 2014 == --\n";
}

sub menu {
    print qq(
===============
= Menu        =
===============
1 - Cifrar    =
2 - Descifrar =
3 - Exit      =
===============
);

    print "\n[+] Option : ";
    chomp( my $op = <stdin> );

    if ( $op eq "3" ) {
        copyright();
        <stdin>;
        exit(1);
    }

    print "\n[+] Enter text : ";
    chomp( my $text = <stdin> );

    print "\n[+] Result ...\n\n";

    if ( $op eq "1" ) {
        print cifrado_murcielago($text);
        <stdin>;
        menu();
    }
    elsif ( $op eq "2" ) {
        print descifrado_murcielago($text);
        <stdin>;
        menu();
    }
    else {
        menu();
    }

}

sub cifrado_murcielago {
    my $texto = shift;
    $texto =~ tr/murcielagoMURCIELAGO/01234567890123456789/;
    return $texto;
}

sub descifrado_murcielago {
    my $texto = shift;
    $texto =~ tr/01234567890123456789/murcielagoMURCIELAGO/;
    return $texto;
}

# The End ?

De 70 líneas a 22 y hace exactamente lo mismo.

Código: perl
#!/usr/bin/perl

print "\n-- == Cifrado Murcielago == --\n";

menu:

print qq(===============\n= Menu        =\n===============\n1 - Cifrar    =\n2 - Descifrar =\n3 - Exit      =\n===============\n);

print "\n[+] Option : ";
chomp( my $op = <stdin> );

exit if ( $op eq "3");

print "\n[+] Enter text : ";
chomp($_ = <stdin>);

$_ =~ tr/murcielagoMURCIELAGO/01234567890123456789/ and print if ($op eq "1");
$_ =~ tr/01234567890123456789/murcielagoMURCIELAGO/ and print if ($op eq "2");
     
print "\n\n-- == (C) Doddy Hackman 2014 == --\n";
       
goto menu;

en ningun momento busque la reduccion de codigo en el script , igual gracias por comentar.

Pero... hacer hacer algo tan simple es un poco absurdo que lo hagas con funciones :-\

no le veo absurdo solo le agregue funciones de mas al script porque quize , es un simple ejemplo no estamos en una competencia de codigos xD.

A mi parecer mejor programar bien que por programar... el codigo de Doddy es obviamente mas organizado y legible para quienes inician en la prog, ademas el uso de goto? naaaaa. Juan a veces no es tanto lo simple que sea, sino lo que pueda aportar para otras cosas, y aunque el código en si, hasta en 1 sola linea en bash lo haces si lo necesitaras. Lo que importa es que quien lo tome (me imagino mas por practica o por ejemplo) al menos vaya aprendiendo de funciones y esas cosas....

Saludos

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Acepta con humildad y aprecio que en la vida la muerte es inevitable y amarás ésta, adorando la muerte

Citar"Cualquier tonto puede escribir código que un ordenador entiende. Los buenos programadores escriben código que los humanos pueden entender."  Martin Fowler 


Citar"Los programas deben ser escritos para que la gente los lea y sólo incidentalmente, para que las máquinas los ejecuten."                        Abelson / Sussman

Citar"Medir el progreso de la programación por líneas de código es como medir el progreso en la construcción de aviones por el peso."                  Bill Gates
Ser mejor cada día es mi meta

=LKI=

No creo que mi código sea ilegible, de hecho lo veo mas leigle que el otro, ya que lo puedes leer y entender sin dar vueltas por el código.

pensa lo que quieras Juan nadie se opone xD , igual si tan legible es tu codigo la proxima vez identalo y evita estos chorizos largos :

Código: perl
print qq(===============\n= Menu        =\n===============\n1 - Cifrar    =\n2 - Descifrar =\n3 - Exit      =\n===============\n);
$_ =~ tr/murcielagoMURCIELAGO/01234567890123456789/ and print if ($op eq "1");


Espero que sea el fin de esta discusion sin sentido xD.

Saludos.