Build Status

NAME

Text::Password::AutoMigration - generate and verify Password with any contexts

SYNOPSIS

my $pwd = Text::Password::AutoMigration->new();
my( $raw, $hash ) = $pwd->genarate();          # list context is required
my $input = $req->body_parameters->{passwd};
my $data = $pwd->encrypt($input);              # salt is made automatically
my $flag = $pwd->verify( $input, $data );

DESCRIPTION

Text::Password::AutoMigration is the Module for lasy Administrators.

It always generates the password with SHA512.

And verifies automatically the hash with CORE::crypt, MD5, SHA-1 by hex, SHA-256 and of course SHA-512.

All you have to do are those:

1. use this module

2. replace the hashes in your DB periodically.

Constructor and initialization

new()

No arguments are required. But you can set some parameters.

Methods and Subroutines

verify( $raw, $hash )

returns the true value if the verification succeeds.

Actually, the value is new hash with SHA-512 from $raw.

So you can replace hashes in your DB very easily like below:

my $pwd = Text::Password::AutoMigration->new();
my $input = $req->body_parameters->{passwd};
my $hash = $pwd->verify( $input, $db{passwd} ); # returns hash with SHA-512, and it's true

if ($hash) { # you don't have to excute this every time
   $succeed = 1;
   my $sth = $dbh->prepare('UPDATE DB SET passwd=? WHERE uid =?') or die $dbh->errstr;
   $sth->excute( $hash, $req->body_parameters->{uid} ) or die $sth->errstr;
}

New hash length is at least 98. So you have to change your DB like below:

ALTER TABLE User CHANGE passwd passwd VARCHAR(98);

nonce($length)

generates the random strings with enough strength.

the length defaults to 8($self->default).

encrypt($raw)

returns hash with unix_sha512_crypt().

salt will be made automatically.

generate($length)

genarates pair of new password and it's hash.

less readable characters(0Oo1Il|!2Zz5sS$6b9qCcKkUuVvWwXx.,:;~-^'"`) are forbidden unless $self->readability is 0.

the length defaults to 8($self->default).

DON'T TRUST this method. According to Password expert says he was wrong, it's not a safe way. So, I will rewrite this method as soon as I find the better way.

SEE ALSO

LICENSE

Copyright (C) Yuki Yoshida(worthmine).

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

AUTHOR

Yuki Yoshida(worthmine) <worthmine!at!gmail.com>