blob: 10ec8b5b720111db32d301aa78c89373ef9d7078 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
#!/usr/bin/perl
use bytes;
use Digest::SHA1;
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;
}
$salt = MIME::Base64::encode(random_bytes(6), '');
$pass = Digest::SHA1::sha1_base64($salt, $ARGV[0]);
print '$4$', $salt, '$', $pass, "\$\n";
|