On Fri, Feb 21, 2014 at 10:45:29AM -0600, Matthew Weigel wrote:
> On 2014-02-21 9:24, Matthew Weigel wrote:
> >On 2014-02-21 5:09, Joel Carnat wrote:
> >
> >Here is a short
> >script that should run fine on a stock OpenBSD machine to generate a
> >bcrypt hash suitable for the userPassword attribute of ldapd.
> 
> Nope nope nope.  That script is incorrect in a couple of ways.  Most
> significantly it leaks the first two bits of the user's password, because I
> didn't understand how to pass the salt correctly.  I don't know if anyone
> actually WANTS a corrected version of the script, but I can't leave the
> uncorrected one out there.
> 
> #! /usr/bin/perl
> use strict;
> 
> while(<>) {
>       my $salt = '';
>       my $new_pw = $_;
>       chomp($new_pw);
> 
>       my @chars = split //,
>               "./ABCDEFGHIJKLMN" .
>               "OPQRSTUVWXYZabcd" .
>               "efghijklmnopqrst" .
>               "uvwxyz0123456789";
> 
>       for (my $i = 0; $i < 21; $i++) {
>               $salt .= $chars[int(rand($#chars+1))];
>       }
> 
>       $salt .= $chars[int(rand(4))*16];
> 
>       my $rnd_salt = '$2a$08$' . $salt;
> 
>       my $hash = crypt($new_pw, $rnd_salt);
>       print("$hash\n");
> }
> 

Honestly why are you not using encrypt(1)

echo -n '{CRYPT}'; encrypt password
{CRYPT}$2a$06$A2vVAo7wVbIiGNjcbBkfNeRXO6TtCe/MA0TVhdu6qUpsy0bMI5St2

Much easier.
-- 
:wq Claudio

Reply via email to