Guest User

Forum Invaders by guedesacp

a guest
Nov 9th, 2013
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 2.00 KB | None | 0 0
  1. #!usr/bin/env perl
  2.  
  3. use warnings;
  4. use strict;
  5. use feature 'say';
  6.  
  7. sub toupper{
  8.     my $w = shift;
  9.     $w = chr $w;
  10.     $w =~ tr/[a-z]/[A-Z]/;
  11.     $w = ord $w;
  12.     return $w;
  13. }
  14.  
  15. sub isalpha{
  16.     my $char = shift;
  17.     $char = chr $char;
  18.     return 1 if ($char =~ /[a-zA-Z]/) or return 0;
  19. }
  20.  
  21. sub strtochar{
  22.     my $c = shift; 
  23.     my @b = split (//, $c);
  24.     for (my $i = 0; $i < @b; $i++){
  25.         $b[$i] = ord $b[$i];
  26.     }
  27.     return @b;
  28. }
  29.  
  30. sub encode{
  31.     my @word = strtochar($_[0]);
  32.     my @key = strtochar($_[1]);
  33.    
  34.     my ($a, $tword);
  35.    
  36.     for ($a = 0; $a < @word; $a++){
  37.  
  38.         if(isalpha($word[$a]), isalpha($key[$a])){
  39.                
  40.             $word[$a] = toupper($word[$a]) - 65;
  41.             $key[$a] = toupper($key[$a]);
  42.            
  43.             my $cript = $key[$a] + $word[$a];
  44.  
  45.             if ($cript >= 91){
  46.                 $cript -= 26;
  47.             }
  48.            
  49.             $word[$a] = $cript;
  50.             $tword .= chr $word[$a];
  51.         }
  52.     }
  53.     return $tword;
  54.            
  55. }
  56.  
  57. sub decode{
  58.     my @word = strtochar($_[0]);
  59.     my @key = strtochar($_[1]);
  60.    
  61.     my ($a, $tword);
  62.    
  63.     for ($a = 0; $a < @word; $a++){
  64.  
  65.         if(isalpha($word[$a]), isalpha($key[$a])){
  66.                
  67.             $word[$a] = toupper($word[$a]);
  68.             $key[$a] = toupper($key[$a]);
  69.            
  70.             my $cript =  $word[$a] - $key[$a] +65;
  71.  
  72.             if ($cript <= 64){
  73.                 $cript += 26;
  74.             }
  75.            
  76.             $word[$a] = $cript;
  77.             $tword .= chr $word[$a];
  78.         }
  79.     }
  80.     return $tword;
  81. }
  82.  
  83. sub help{
  84.     print "\n[+] Cifra de Vigenere\n";
  85.     print "[0] Coder => guedes.acp\n\t\treleitura de MMxM";
  86.     print "\n\tModo de uso: $0 <palavra> <chave> <e|d>\n";
  87.     print "\n\t \"A chave e a palavra devem ter o mesmo tamanho\"\n\n";
  88.     exit(0);
  89. }
  90.  
  91. sub main{
  92.     my $cmd;
  93.     if(@ARGV != 3){
  94.         help;
  95.     }  
  96.  
  97.     if(length($ARGV[0]) != length($ARGV[1])){
  98.         help;
  99.     }
  100.     {
  101.         if ($ARGV[2] eq 'd'){
  102.             $cmd = decode($ARGV[0], $ARGV[1]);
  103.         }
  104.         elsif ($ARGV[2] eq 'e'){
  105.             $cmd = encode($ARGV[0], $ARGV[1]);
  106.         }
  107.         else {
  108.             help;
  109.         }
  110.     }
  111.  
  112.     print "PALAVRA: " . $ARGV[0] . "\n";
  113.     print "CHAVE: " . $ARGV[1] . "\n";
  114.     print "RESULTADO: " . $cmd . "\n\n";
  115. }
  116.  
  117. main;
Advertisement
Add Comment
Please, Sign In to add comment