Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: BigBear en 28 Noviembre 2014, 17:48 pm



Título: [Perl] Ejemplo de Cifrado Cesar
Publicado por: BigBear en 28 Noviembre 2014, 17:48 pm
Un simple ejemplo de como hacer en cifrado cesar en Perl.

El codigo :

Código
  1. # !usr/bin/perl
  2. # Caesar Cipher
  3. # Coded By Doddy Hackman in the year 2014
  4.  
  5. head();
  6. menu();
  7. copyright();
  8.  
  9. # Functions
  10.  
  11. sub head {
  12.    print "\n-- == Caesar Cipher == --\n";
  13. }
  14.  
  15. sub copyright {
  16.    print "\n\n-- == (C) Doddy Hackman 2014 == --\n";
  17. }
  18.  
  19. sub menu {
  20.    print qq(
  21. ==============
  22. = Menu       =
  23. ==============
  24. 1 - Encode   =
  25. 2 - Decode   =
  26. 3 - Exit     =
  27. ==============
  28. );
  29.  
  30.    print "\n[+] Option : ";
  31.    chomp( my $op = <stdin> );
  32.  
  33.    if ( $op eq "3" ) {
  34.        copyright();
  35.        <stdin>;
  36.        exit(1);
  37.    }
  38.  
  39.    print "\n[+] Enter text : ";
  40.    chomp( my $text = <stdin> );
  41.  
  42.    print "\n[+] Result ...\n\n";
  43.  
  44.    if ( $op eq "1" ) {
  45.        print cifrado_cesar($text);
  46.        <stdin>;
  47.        menu();
  48.    }
  49.    elsif ( $op eq "2" ) {
  50.        print descifrado_cesar($text);
  51.        <stdin>;
  52.        menu();
  53.    }
  54.    else {
  55.        menu();
  56.    }
  57.  
  58. }
  59.  
  60. sub cifrado_cesar {
  61.  
  62.    my @re;
  63.  
  64.    @letras = split( //, $_[0] );
  65.  
  66.    for my $letra (@letras) {
  67.  
  68.        if ( $letra ne " " ) {
  69.  
  70.            $letrafinal = chr( ord($letra) + 3 );
  71.  
  72.            $letrafinal =~ s/{/a/;
  73.            $letrafinal =~ s/\|/b/;
  74.            $letrafinal =~ s/}/c/;
  75.  
  76.            push( @re, $letrafinal );
  77.  
  78.        }
  79.        else {
  80.            push( @re, " " );
  81.        }
  82.    }
  83.  
  84.    return @re;
  85.  
  86. }
  87.  
  88. sub descifrado_cesar($texto) {
  89.  
  90.    my @re;
  91.  
  92.    @letras = split( //, $_[0] );
  93.  
  94.    for my $letra (@letras) {
  95.  
  96.        if ( $letra ne " " ) {
  97.  
  98.            $letrafinal = chr( ord($letra) - 3 );
  99.  
  100.            $letrafinal =~ s/\^/x/;
  101.            $letrafinal =~ s/_/y/;
  102.            $letrafinal =~ s/`/z/;
  103.  
  104.            push( @re, $letrafinal );
  105.  
  106.        }
  107.        else {
  108.            push( @re, " " );
  109.        }
  110.    }
  111.  
  112.    return @re;
  113.  
  114. }
  115.  
  116. # The End ?
  117.