home *** CD-ROM | disk | FTP | other *** search
- #!/usr/bin/perl
-
- use bytes;
- use Crypt::PasswdMD5;
- use MIME::Base64;
-
- sub random_bytes($) {
- my($n) = @_;
- my($v, $i);
-
- if ( open(RANDOM, '<', '/dev/random') ||
- open(RANDOM, '<', '/dev/urandom') ) {
- read(RANDOM, $v, $n);
- } else {
- # No real RNG available...
- srand($$ ^ time);
- $v = '';
- for ( $i = 0 ; $i < $n ; $i++ ) {
- $v .= ord(int(rand() * 256));
- }
- }
-
- return $v;
- }
-
-
- ($pass, $salt) = @ARGV;
-
- unless (defined($salt)) {
- $salt = MIME::Base64::encode(random_bytes(6), '');
- $salt =~ tr/\+/./; # . not +
- }
-
- print unix_md5_crypt($pass, $salt), "\n";
-