Authen-Passphrase
view release on metacpan or search on metacpan
lib/Authen/Passphrase/EggdropBlowfish.pm view on Meta::CPAN
use Carp qw(croak);
use Crypt::Eksblowfish::Uklblowfish 0.008;
our $VERSION = "0.008";
use parent "Authen::Passphrase";
my $b64_digits =
"./0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
sub _en_base64($) {
my($bytes) = @_;
my $digits = "";
foreach my $word (reverse unpack("N*", $bytes)) {
for(my $i = 6; $i--; $word >>= 6) {
$digits .= substr($b64_digits, $word & 0x3f, 1);
}
}
return $digits;
}
sub _de_base64($) {
my($digits) = @_;
my @words;
while($digits =~ /(......)/sg) {
my $wdig = $1;
my $word = 0;
for(my $i = 6; $i--; ) {
$word <<= 6;
$word |= index($b64_digits, substr($wdig, $i, 1));
}
push @words, $word;
lib/Authen/Passphrase/PHPass.pm view on Meta::CPAN
use Data::Entropy::Algorithms 0.000 qw(rand_bits);
use Digest::MD5 1.99_53 ();
our $VERSION = "0.008";
use parent "Authen::Passphrase";
my $base64_digits = "./0123456789ABCDEFGHIJKLMNOPQRST".
"UVWXYZabcdefghijklmnopqrstuvwxyz";
sub _en_base64($) {
my($bytes) = @_;
my $nbytes = length($bytes);
my $npadbytes = 2 - ($nbytes + 2) % 3;
$bytes .= "\0" x $npadbytes;
my $digits = "";
for(my $i = 0; $i < $nbytes; $i += 3) {
my $v = ord(substr($bytes, $i, 1)) |
(ord(substr($bytes, $i+1, 1)) << 8) |
(ord(substr($bytes, $i+2, 1)) << 16);
$digits .= substr($base64_digits, $v & 0x3f, 1) .
substr($base64_digits, ($v >> 6) & 0x3f, 1) .
substr($base64_digits, ($v >> 12) & 0x3f, 1) .
substr($base64_digits, ($v >> 18) & 0x3f, 1);
}
substr $digits, -$npadbytes, $npadbytes, "";
return $digits;
}
sub _de_base64($) {
my($digits) = @_;
my $ndigits = length($digits);
my $npadbytes = 3 - ($ndigits + 3) % 4;
$digits .= "." x $npadbytes;
my $bytes = "";
for(my $i = 0; $i < $ndigits; $i += 4) {
my $v = index($base64_digits, substr($digits,$i,1)) |
(index($base64_digits, substr($digits,$i+1,1)) << 6) |
(index($base64_digits, substr($digits,$i+2,1)) << 12) |
(index($base64_digits, substr($digits,$i+3,1)) << 18);
( run in 0.274 second using v1.01-cache-2.11-cpan-65fba6d93b7 )