App-OATH
view release on metacpan or search on metacpan
lib/App/OATH/Crypt/Rijndael.pm view on Meta::CPAN
package App::OATH::Crypt::Rijndael;
our $VERSION = '1.20260324'; # VERSION
use strict;
use warnings;
use Convert::Base32;
use Crypt::Rijndael;
use Digest::MD5;
use String::Random qw{ random_string };
sub new {
my ( $class, $args ) = @_;
my $self = {
'password' => $args->{'password'},
};
bless $self, $class;
return $self;
}
sub _get_crypt_object {
my ( $self ) = @_;
my $password = $self->{'password'};
my $md5 = Digest::MD5->new();
$md5->add( $password );
my $crypt_key = $md5->digest();
my $crypt = Crypt::Rijndael->new( $crypt_key, Crypt::Rijndael::MODE_CBC() );
return $crypt;
}
sub encrypt {
my ( $self, $data ) = @_;
my $worker = $self->_get_crypt_object();
my $pad = random_string( '.' x ( 16 - ( length( $data ) % 16 ) ) );
my $e = $worker->encrypt( $pad . $data );
$e = encode_base32( $e );
return $e;
}
sub decrypt {
my ( $self, $data ) = @_;
my $worker = $self->_get_crypt_object();
my $e = decode_base32( $data );
my $u = $worker->decrypt($e);
return $u;
}
1;
__END__
=head1 NAME
App::OATH::Crypt::Rijndael - Crypto modules for Simple OATH authenticator
=head1 DESCRIPTION
Crypto modules for basic Rijndael
=head1 SYNOPSIS
( run in 2.190 seconds using v1.01-cache-2.11-cpan-0d23b851a93 )