[Perl] Ejemplo de Cifrado Cesar

  • 2 Respuestas
  • 4556 Vistas

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

Desconectado BigBear

  • *
  • Underc0der
  • Mensajes: 543
  • Actividad:
    0%
  • Reputación 3
    • Ver Perfil

[Perl] Ejemplo de Cifrado Cesar

  • en: Noviembre 28, 2014, 01:48:09 pm
Un simple ejemplo de como hacer en cifrado cesar en Perl.

El codigo :

Código: (perl) You are not allowed to view links. Register or Login
# !usr/bin/perl
# Caesar Cipher
# Coded By Doddy Hackman in the year 2014

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

# Functions

sub head {
    print "\n-- == Caesar Cipher == --\n";
}

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

sub menu {
    print qq(
==============
= Menu       =
==============
1 - Encode   =
2 - Decode   =
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_cesar($text);
        <stdin>;
        menu();
    }
    elsif ( $op eq "2" ) {
        print descifrado_cesar($text);
        <stdin>;
        menu();
    }
    else {
        menu();
    }

}

sub cifrado_cesar {

    my @re;

    @letras = split( //, $_[0] );

    for my $letra (@letras) {

        if ( $letra ne " " ) {

            $letrafinal = chr( ord($letra) + 3 );

            $letrafinal =~ s/{/a/;
            $letrafinal =~ s/\|/b/;
            $letrafinal =~ s/}/c/;

            push( @re, $letrafinal );

        }
        else {
            push( @re, " " );
        }
    }

    return @re;

}

sub descifrado_cesar($texto) {

    my @re;

    @letras = split( //, $_[0] );

    for my $letra (@letras) {

        if ( $letra ne " " ) {

            $letrafinal = chr( ord($letra) - 3 );

            $letrafinal =~ s/\^/x/;
            $letrafinal =~ s/_/y/;
            $letrafinal =~ s/`/z/;

            push( @re, $letrafinal );

        }
        else {
            push( @re, " " );
        }
    }

    return @re;

}

# The End ?

Desconectado Juan

  • *
  • Underc0der
  • Mensajes: 158
  • Actividad:
    0%
  • Reputación 0
  • Ex-Drinky
    • Ver Perfil

Re:[Perl] Ejemplo de Cifrado Cesar

  • en: Noviembre 28, 2014, 04:08:20 pm
Hola Doddy! espero que ahora no te  tomes a mal mis consejos.  :)

Es conveniente que programes con use strict, ya que tienes muchas variables sin declarar y te puedes liar con el nombre de las variables al programar.

En algunas líneas para realizar la pausa usas stdin de esta manera:

Código: (perl) You are not allowed to view links. Register or Login
<STDIN>;
Puedes poner simplemente esto: <>; y te va a funcionar igual y es mas corto  :P

También tienes algunas lineas de código de más, como por ejemplo estas:

Código: (perl) You are not allowed to view links. Register or Login
$letrafinal =~ s/{/a/;
$letrafinal =~ s/\|/b/;
$letrafinal =~ s/}/c/;

Que la puedes dejar solo en una con la función tr.

un saludo.

Código: You are not allowed to view links. Register or Login
#!/usr/bin/perl
« Última modificación: Noviembre 28, 2014, 04:14:21 pm por Juan »

Desconectado BigBear

  • *
  • Underc0der
  • Mensajes: 543
  • Actividad:
    0%
  • Reputación 3
    • Ver Perfil

Re:[Perl] Ejemplo de Cifrado Cesar

  • en: Noviembre 28, 2014, 04:11:56 pm
ok , gracias por las sugerencias.