Crypt-Shark

 view release on metacpan or  search on metacpan

Shark.pm  view on Meta::CPAN

XSLoader::load('Crypt::Shark', $VERSION);

# Preloaded methods go here.

1;

__END__

=head1 NAME

Crypt::Shark - Crypt::CBC compliant block cipher

=head1 ABSTRACT

Shark is 64-bit block cipher that accepts a 128-bit key.

=head1 SYNOPSIS

    use Crypt::Shark;

    $cipher = new Crypt::Shark $key;
    $ciphertext = $cipher->encrypt($plaintext);
    $plaintext  = $cipher->decrypt($ciphertext);

=head1 DESCRIPTION

Shark is 64-bit block cipher that accepts a 128-bit key. It was
designed by Vincent Rijmen, Joan Daemen, Bart Preneel, Antoon
Bosselaers, and Erik De Win.

This module supports the Crypt::CBC interface, with the following
functions.

=head2 Functions

=over

=item B<blocksize>

Returns the size (in bytes) of the block (8, in this case).

Shark.pm  view on Meta::CPAN


    print "Decryption OK\n" if ($plaintext1 eq $plaintext2);

=head1 EXAMPLE 2

    #!/usr/local/bin/perl

    use diagnostics;
    use strict;
    use warnings;
    use Crypt::CBC;  # CBC automatically loads Shark for us

    # when using Crypt::CBC, key may be of ANY length
    my $key = "0123456789abcdef";

    # IV must be exactly 16 bytes long
    my $IV = pack "H16", 0;

    my $cipher = Crypt::CBC->new({'key' => $key,
                                  'cipher' => 'Shark',
                                  'iv' => $IV,
                                  'regenerate_key' => 1,
                                  'padding' => 'standard',
                                  'prepend_iv' => 0
                                });

    # when using Crypt::CBC, plaintext may be of ANY length
    my $plaintext1 = "This is a test";

    my $ciphertext = $cipher->encrypt($plaintext1);
    my $plaintext2 = $cipher->decrypt($ciphertext);

    print "Decryption OK\n" if ($plaintext1 eq $plaintext2);

=head1 MORE EXAMPLES

See B<Crypt::CBC> for more examples using CBC mode. See also the
"examples" and "t" directories for some more examples.

=head1 SEE ALSO

B<Crypt::Khazad>, B<Crypt::Misty1>, B<Crypt::Anubis>,
B<Crypt::Noekeon>, B<Crypt::Skipjack>, B<Crypt::Camellia>,
B<Crypt::Square>, and B<Crypt::Rainbow>.

=head1 COPYRIGHT AND LICENSE

examples/cbc-mode  view on Meta::CPAN

#!/usr/local/bin/perl

use diagnostics;
use strict;
use warnings;
use Crypt::CBC;    # CBC automatically loads Shark for us

my $key = pack "H32", "00112233445566778899aabbccddeeff";
my $IV = pack "H16", "123456789abcdef0";

my $cipher = Crypt::CBC->new({'key' => $key,
                              'cipher' => 'Shark',
                              'iv' => $IV,
                              'regenerate_key' => 1,
                              'padding' => 'standard',
                              'prepend_iv' => 0
                            });

my $plaintext1 = pack "H16", "123456789abcdef";
print "plaintext1  : ", unpack("H*", $plaintext1), "\n";

examples/fileenc  view on Meta::CPAN

#!/usr/local/bin/perl

use diagnostics;
use strict;
use warnings;
use Getopt::Long;
use Crypt::CBC;    # CBC automatically loads Shark for us

my ($encrypt, $decrypt, $help);
GetOptions("encrypt" => \$encrypt, "decrypt" => \$decrypt,
    "help" => \$help);

sub usage
{
    print "USAGE:\n";
    print "    $0 --encrypt file1 > outputfile\n";
    print "    $0 --decrypt file1 > outputfile\n\n";

examples/fileenc  view on Meta::CPAN

&usage() if (!$encrypt and !$decrypt);
&usage() if ($help);

my $key = &get_input("password");

# For better security, IV must be randomly
# generated AND must be used ONLY ONCE!
# So, this example is *very* weak!
my $IV = pack "H16", "0123456789abcdef";

my $cipher = Crypt::CBC->new({'key' => $key,
                              'cipher' => 'Shark',
                              'iv' => $IV,
                              'regenerate_key' => 1,
                              'padding' => 'standard',
                              'prepend_iv' => 0
                            });

local $/ = undef;   # slurp whole file
chomp $ARGV[0];
open INFILE, $ARGV[0];

examples/pin-generator  view on Meta::CPAN

#!/usr/local/bin/perl

use diagnostics;
use strict;
use warnings;
use Crypt::CBC;
use MIME::Base64;

sub get_input
{
    my ($message) = @_;
    local $| = 1;
    local *TTY;
    open TTY,"/dev/tty";
    my ($tkey1, $tkey2);
    system "stty -echo </dev/tty";

examples/pin-generator  view on Meta::CPAN

    } until $tkey1 eq $tkey2;

    system "stty echo </dev/tty";
    close TTY;
    return $tkey1;
}

my $key = &get_input("username");

my $IV = pack "H16", "0123456789abcdef";
my $cipher = Crypt::CBC->new({'key' => $key,
                              'cipher' => 'Shark',
                              'iv' => $IV,
                              'regenerate_key' => 1,
                              'padding' => 'standard',
                              'prepend_iv' => 0
                            });

my $ciphertext = $cipher->encrypt($key);
print "Your password is\n", encode_base64($ciphertext, ""), "\n";



( run in 0.659 second using v1.01-cache-2.11-cpan-e1769b4cff6 )