PVE::Tools::encrypt_pw() - new helper copied from pve-access-control
authorDietmar Maurer <dietmar@proxmox.com>
Thu, 30 Mar 2017 15:49:26 +0000 (17:49 +0200)
committerDietmar Maurer <dietmar@proxmox.com>
Thu, 30 Mar 2017 15:49:26 +0000 (17:49 +0200)
src/PVE/Tools.pm

index fe35ef2..406aa2a 100644 (file)
@@ -1443,4 +1443,18 @@ sub enter_systemd_scope {
     die "systemd job never completed\n" if !$done;
 }
 
+my $salt_starter = time();
+
+sub encrypt_pw {
+    my ($pw) = @_;
+
+    $salt_starter++;
+    my $salt = substr(Digest::SHA::sha1_base64(time() + $salt_starter + $$), 0, 8);
+
+    # crypt does not want '+' in salt (see 'man crypt')
+    $salt =~ s/\+/X/g;
+
+    return crypt(encode("utf8", $pw), "\$5\$$salt\$");
+}
+
 1;