NAME
Crypt::Password - Unix-style, Variously Hashed Passwords
SYNOPSIS
use Crypt::Password;
my $hashed = password("password");
$user->set_password($hashed);
if ($user->get_password eq password($from_client)) {
# authenticated
}
# This is called Modular Crypt Format.
if (password($from_database)->check($from_user)) {
# authenticated
}
# Default algorithm, supplied salt:
my $hashed = password("password", "salt");
# md5, no salt:
my $hashed = password("password", "", "md5");
# sha512, invented salt:
my $hashed = password("password", undef, "sha512");
DESCRIPTION
This is just a wrapper for perl's crypt(), which can do everything you would probably want to do to store a password, but this is to make usage easier.
The object stringifies to the return string of the crypt() function, which is usually (see "KNOWN ISSUES") in Modular Crypt Format:
# scalar($hashed):
# v digest v hash ->
# $5$%RK2BU%L$aFZd1/4Gpko/sJZ8Oh.ZHg9UvxCjkH1YYoLZI6tw7K8
# ^ salt ^
That you can store, etc, retrieve then give it to password() again to ->check($given_password) or string compare to the output of a new password($given_password).
If the given string is already hashed it is assumed to be okay to use it as is. This means users can supply pre-hashed passwords to you.
FUNCTIONS
METHODS
- check ( $another_password )
-
Checks the given password hashes the same as that this object represents.
- hash
-
Returns the hash.
- salt
-
Returns the salt.
- algorithm
-
Returns the algorithm by name.
- algorithm_arg
-
Returns the algorithm as it is represented in the Modular Crypt Formatted output of
crypt(3).
KNOWN ISSUES
Cryptographic functionality depends greatly on your local glibc's crypt(3). Old Linux may not support sha*, many other platforms only support md5, or that and Blowfish, etc.
SUPPORT, SOURCE
If you have a problem, submit a test case via a fork of the github repo.
http://github.com/st3vil/Crypt-Password
AUTHOR AND LICENCE
Code by Steve Eirium, nostrasteve@gmail.com, idea by Sam Vilain, sam.vilain@catalyst.net.nz. Development commissioned by NZ Registry Services.
Copyright 2009, NZ Registry Services. This module is licensed under the Artistic License v2.0, which permits relicensing under other Free Software licenses.