Un simple ejemplo de como hacer en cifrado cesar en Perl.

El codigo :

Código: Seleccionar todo

# !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 ?
Responder

Volver a “Fuentes”