package Password;

# Simple crypt() wrapper for "encryption" of passwords
#	(C) 2004 - J.W. Janssen, <j.w.janssen@lxtreme.nl>,
#	L'Xtreme IT consultancy.
#
# Released under GPL - http://www.gnu.org/licenses/gpl.txt
#
# Usage:
#   from console  : perl -MPassword -e ask_password
# or
#   use Password;

use strict;
use vars qw/@ISA @EXPORT/;

@ISA = qw/Exporter/;
@EXPORT = qw/encrypt compare ask_password/;


sub encrypt
{
  my ( $plaintext, $salt ) = @_;
  crypt( $plaintext, $salt || _create_salt() );
} # encrypt


sub compare
{
  my $reference = shift;
  my $plaintext = shift;

  my $encrypted = encrypt( $plaintext, $reference );
  ( $reference eq $encrypted );
} # compare


sub _create_salt
{
  join '', ('.', '/', 0..9, 'A'..'Z', 'a'..'z')[rand 64, rand 64];
} # _create_salt


sub ask_password
{
  print "Give user password : ";
  my $pwd = <STDIN>;	# Read a password from the standard input
  print "*** WARNING: Password is less than 6 characters!\n"
  	if length $pwd < 6;
  print "Crypted            : ", encrypt( $pwd ), "\n";
} # ask_password

1;

###EOF###


