Crypt-Square
view release on metacpan or search on metacpan
XSLoader::load('Crypt::Square', $VERSION);
# Preloaded methods go here.
1;
__END__
=head1 NAME
Crypt::Square - Crypt::CBC-compliant block cipher
=head1 SYNOPSIS
use Crypt::Square;
$cipher = new Crypt::Square $key;
$ciphertext = $cipher->encrypt($plaintext);
$plaintext = $cipher->decrypt($ciphertext);
=head1 DESCRIPTION
Square is a 128-bit block cipher that accepts a 128-bit key. Designed
by Joan Daemen, Vincent Rijmen, and Lars Knudsen, Square is the
predecessor of Rijndael, aka the Advanced Encryption Standard.
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 (16, in this case).
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 Square 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 "H32", 0;
my $cipher = Crypt::CBC->new({'key' => $key,
'cipher' => 'Square',
'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>, and B<Crypt::Camellia>.
=head1 CAVEATS
Note that this implementation has been rigged and tested only on the
*
* Differences from version 2.4 (1997.04.09):
*
* - Changed all initialization functions so that the IV (when applicable)
* is separately loaded.
*
* - Ciphertext Stealing (CTS) mode added.
*
* - Output Feedback (OFB) mode added.
*
* - Cipher Block Chaining (CBC) mode added.
*
* - Split square.c int several files according to the specific functionality
* (basic functions, modes, testing).
*
* - Flipped tables according to the endianness of the subjacent platform
* for best performance.
*
* - Changed "maketabs.c" to "sqgen.c" for compatibility with the Pegwit system.
*
* =============================================================================
examples/cbc-mode view on Meta::CPAN
#!/usr/local/bin/perl
use diagnostics;
use strict;
use warnings;
use Crypt::CBC; # CBC automatically loads Square for us
my $key = pack "H32", "00112233445566778899aabbccddeeff";
my $IV = pack "H32", "00112233445566778899aabbccddeeff";
my $cipher = Crypt::CBC->new({'key' => $key,
'cipher' => 'Square',
'iv' => $IV,
'regenerate_key' => 1,
'padding' => 'standard',
'prepend_iv' => 0
});
my $plaintext1 = pack "H32", "0123456789abcdeffedcba9876543210";
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 Square 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 "H32", "000102030405060708090a0b0c0d0e0f";
my $cipher = Crypt::CBC->new({'key' => $key,
'cipher' => 'Square',
'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 "H32", "000102030405060708090a0b0c0d0e0f";
my $cipher = Crypt::CBC->new({'key' => $key,
'cipher' => 'Square',
'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.945 second using v1.01-cache-2.11-cpan-e1769b4cff6 )