movebits: rewrite significant chunks of the algorithm
[syslinux.git] / sha1pass
blob3be2dbc118125893632466832744fab8b6908264
1 #!/usr/bin/perl
3 use bytes;
4 use Digest::SHA1;
5 use MIME::Base64;
7 sub random_bytes($) {
8 my($n) = @_;
9 my($v, $i);
11 if ( open(RANDOM, '<', '/dev/random') ||
12 open(RANDOM, '<', '/dev/urandom') ) {
13 read(RANDOM, $v, $n);
14 } else {
15 # No real RNG available...
16 srand($$ ^ time);
17 $v = '';
18 for ( $i = 0 ; $i < $n ; $i++ ) {
19 $v .= ord(int(rand() * 256));
23 return $v;
27 ($pass, $salt) = @ARGV;
29 unless (defined($salt)) {
30 $salt = MIME::Base64::encode(random_bytes(6), '');
32 $pass = Digest::SHA1::sha1_base64($salt, $pass);
34 print '$4$', $salt, '$', $pass, "\$\n";