syslinux/utils/sha1pass
<<
>>
Prefs
   1#!/usr/bin/perl
   2
   3use bytes;
   4use Digest::SHA1;
   5use MIME::Base64;
   6
   7sub random_bytes($) {
   8    my($n) = @_;
   9    my($v, $i);
  10
  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));
  20        }
  21    }
  22
  23    return $v;
  24}
  25
  26
  27($pass, $salt) = @ARGV;
  28
  29unless (defined($salt)) {
  30    $salt = MIME::Base64::encode(random_bytes(6), '');
  31}
  32$pass = Digest::SHA1::sha1_base64($salt, $pass);
  33
  34print '$4$', $salt, '$', $pass, "\$\n";
  35
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.