Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!usr/bin/env perl
- use warnings;
- use strict;
- use feature 'say';
- sub toupper{
- my $w = shift;
- $w = chr $w;
- $w =~ tr/[a-z]/[A-Z]/;
- $w = ord $w;
- return $w;
- }
- sub isalpha{
- my $char = shift;
- $char = chr $char;
- return 1 if ($char =~ /[a-zA-Z]/) or return 0;
- }
- sub strtochar{
- my $c = shift;
- my @b = split (//, $c);
- for (my $i = 0; $i < @b; $i++){
- $b[$i] = ord $b[$i];
- }
- return @b;
- }
- sub encode{
- my @word = strtochar($_[0]);
- my @key = strtochar($_[1]);
- my ($a, $tword);
- for ($a = 0; $a < @word; $a++){
- if(isalpha($word[$a]), isalpha($key[$a])){
- $word[$a] = toupper($word[$a]) - 65;
- $key[$a] = toupper($key[$a]);
- my $cript = $key[$a] + $word[$a];
- if ($cript >= 91){
- $cript -= 26;
- }
- $word[$a] = $cript;
- $tword .= chr $word[$a];
- }
- }
- return $tword;
- }
- sub decode{
- my @word = strtochar($_[0]);
- my @key = strtochar($_[1]);
- my ($a, $tword);
- for ($a = 0; $a < @word; $a++){
- if(isalpha($word[$a]), isalpha($key[$a])){
- $word[$a] = toupper($word[$a]);
- $key[$a] = toupper($key[$a]);
- my $cript = $word[$a] - $key[$a] +65;
- if ($cript <= 64){
- $cript += 26;
- }
- $word[$a] = $cript;
- $tword .= chr $word[$a];
- }
- }
- return $tword;
- }
- sub help{
- print "\n[+] Cifra de Vigenere\n";
- print "[0] Coder => guedes.acp\n\t\treleitura de MMxM";
- print "\n\tModo de uso: $0 <palavra> <chave> <e|d>\n";
- print "\n\t \"A chave e a palavra devem ter o mesmo tamanho\"\n\n";
- exit(0);
- }
- sub main{
- my $cmd;
- if(@ARGV != 3){
- help;
- }
- if(length($ARGV[0]) != length($ARGV[1])){
- help;
- }
- {
- if ($ARGV[2] eq 'd'){
- $cmd = decode($ARGV[0], $ARGV[1]);
- }
- elsif ($ARGV[2] eq 'e'){
- $cmd = encode($ARGV[0], $ARGV[1]);
- }
- else {
- help;
- }
- }
- print "PALAVRA: " . $ARGV[0] . "\n";
- print "CHAVE: " . $ARGV[1] . "\n";
- print "RESULTADO: " . $cmd . "\n\n";
- }
- main;
Advertisement
Add Comment
Please, Sign In to add comment