Frage Wie erstelle ich ein SHA-512-Hash-Passwort für Schatten?


Die vorherigen SF-Fragen, die ich gesehen habe, haben zu Antworten geführt, die MD5-Hash-Passwort erzeugen.

Hat jemand einen Vorschlag, ein SHA-512-Hash-Passwort zu erstellen? Ich würde lieber einen Einstrich anstelle eines Drehbuchs bevorzugen, aber wenn ein Drehbuch die einzige Lösung ist, ist das auch in Ordnung.

Aktualisieren

Ersetze vorherige py2-Versionen durch diese:

python3 -c "import crypt;print(crypt.crypt(input('clear-text pw: '), crypt.mksalt(crypt.METHOD_SHA512)))"

56
2017-11-11 11:14


Ursprung


SHA und MD5 sind nicht Verschlüsselung. Sie sind Hash-Algorithmen. Der entscheidende Unterschied besteht darin, dass die Hash-Daten nicht wiederherstellbar sind. Was musst du tun? - SmallClanger
Vielen Dank. Die Frage wurde geändert. man 5 shadow bezeichnet es als "verschlüsseltes Passwort", also ging ich mit diesem Begriff einher. - Belmin Fernandez
Entschuldigung, wenn das ein bisschen snarky war. Versuchen Sie, Schatten-kompatible Kennworthashes manuell zu generieren? Wenn ja, werfen Sie einen Blick auf Ihre /etc/shadow Inhalt. Du wirst sehen $x$salt$hash. x bezeichnet den Algorithmus von cryptmit 6 typisch für moderne Linux, das ist sha512 (siehe man 3 crypt). Jede der folgenden Antworten erzeugt den gleichen Hash, solange Sie das gleiche Salz geben. - SmallClanger
Oh nein, überhaupt nicht snarky. Du hast etwas klargestellt, worüber ich verwirrt war, deshalb bin ich sehr dankbar, Sir! - Belmin Fernandez
Vielen Dank! Die Passlib-basierte ist die einzige, die ich unter OS X arbeiten konnte. - Stig Brautaset


Antworten:


Hier ist ein Liner:

python -c 'import crypt; print crypt.crypt("test", "$6$random_salt")'

Python 3.3+ beinhaltet mksalt in der Krypta, was es wesentlich einfacher (und sicherer) macht:

python3 -c 'import crypt; print(crypt.crypt("test", crypt.mksalt(crypt.METHOD_SHA512)))'

Wenn Sie kein Argument angeben crypt.mksalt (Es könnte akzeptieren crypt.METHOD_CRYPT, ...MD5, SHA256, und SHA512), wird es das stärkste verfügbare verwenden.

Die ID des Hashs (Nummer nach dem ersten $) bezieht sich auf die verwendete Methode:

  • 1 -> MD5
  • 2a -> Blowfish (nicht in der Hauptglibc; hinzugefügt in einigen Linux-Distributionen)
  • 5 -> SHA-256 (seit glibc 2.7)
  • 6 -> SHA-512 (seit glibc 2.7)

Ich empfehle Ihnen, nachzuschauen, welche Salze und so sind, und wie die Smallclamers den Unterschied zwischen Verschlüsselung und Hashing kommentieren.

Update 1: Die erzeugte Zeichenfolge eignet sich für Schatten- und Kickstart-Skripte. Update 2: Warnung. Wenn Sie einen Mac verwenden, lesen Sie den Kommentar über die Verwendung in Python auf einem Mac, wo es nicht wie erwartet funktioniert.


62
2017-11-11 11:29



Importieren der getpass und pwd Module sind nicht notwendig. - akaihola
Ersetzen random_salt mit einem echten Zufallssalz. - Belmin Fernandez
Ich kann das in Yosemite nicht schaffen. Das spuckt es aus: $6asQOJRqB1i2 - das scheint nicht lange genug zu sein, um richtig zu sein! - Stig Brautaset
Lass das Krypt-Modul das Salz für dich machen: python -c 'import crypt; print crypt.crypt("test", crypt.mksalt(crypt.METHOD_SHA512))' - rrauenza
@ Kasperd hätte ich mir die anschauen sollen Dokumente; es ist in 3.3+ - Nick T


Auf Debian können Sie verwenden mkpasswd  Passwörter mit verschiedenen Hash-Algorithmen erstellen, die für / etc / shadow geeignet sind. Es ist im Paket enthalten whois (nach apt-Datei)

mkpasswd -m sha-512
mkpasswd -m md5

Um eine Liste der verfügbaren Hash-Algoritmen zu erhalten, geben Sie Folgendes ein:

mkpasswd -m help 

HTH


35
2017-07-23 09:22



Welches Paket bietet es? Da ist ein mkpasswd Programm (Teil von Expect) unter Fedora, aber es ist nutzlos für diesen Zweck. - Cristian Ciupitu
Wie er sagte, die Version von mkpasswd Er spricht über Debian / Ubuntu. Das mkpasswd auf Fedora (mindestens bis 14) fehlt der -m Schalter. - slm
Seltsamerweise ist es das Whois-Paket, das aus Debian stammt. Sehen dpkg -S /usr/bin/mkpasswd Ich konnte es selbst nicht glauben: D - Rbjz
Um ein Passwort zu überprüfen, wenn die erste Ziffer 6 ist, verwenden Sie den Teil zwischen dem zweiten und dritten Dollar als Salz. Zum Beispiel für root:$6$AbCdE$xyz:... du solltest benutzen: mkpasswd -m sha-512 -S AbCdE. Mit dem richtigen Passwort sollten Sie den gleichen Hash erhalten. - Luc


Beste Antwort: Grubenkrypta

Usage: grub-crypt [OPTION]...
Encrypt a password.

-h, --helpPrint this message and exit
-v, --version           Print the version information and exit
--md5                   Use MD5 to encrypt the password
--sha-256               Use SHA-256 to encrypt the password
**--sha-512             Use SHA-512 to encrypt the password (default)**

24
2017-10-03 20:26



Einfache Lösung ... für CentOS 6 funktioniert. - Banjer
Auf Systemen, die das haben grub-crypt Befehl, das ist wirklich der narrensicherste und bequemste Weg, es zu tun. Es macht keinen Sinn, mit Salzen manuell herumzualbern, wenn man es vermasseln könnte. Das Problem ist, dass immer mehr moderne Systeme GRUB2 haben und diesen Befehl daher nicht enthalten. - rsaw


Hier ist ein kurzer C-Code, um das SHA-512-Passwort auf verschiedenen Unix-Betriebssystemen zu generieren.

Datei: passwd-sha512.c

#define _XOPEN_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

int main(int argc, char *argv[]) {
  if ( argc < 3 || (int) strlen(argv[2]) > 16 ) {
    printf("usage: %s password salt\n", argv[0]);
    printf("--salt must not larger than 16 characters\n");
    return;
  }

  char salt[21];
  sprintf(salt, "$6$%s$", argv[2]);

  printf("%s\n", crypt((char*) argv[1], (char*) salt));
  return;
}

kompilieren:

/usr/bin/gcc -lcrypt -o passwd-sha512 passwd-sha512.c

Verwendungszweck:

passwd-sha512 <password> <salt (16 chars max)>

8
2018-02-13 10:03



Diese Frage ist 3 Jahre alt ... - Grumpy
Dieser Kommentar ist nicht so alt. Nette App, die du da hast, das ist nur c Antwort dort 1up sogar während es aussieht wie man Seite Beispiel :) - Sampo Sarrala


Perl One-Liner-Lösung zur Generierung des Hash-Passworts SHA-512:

perl -le 'print crypt "desiredPassword", "\$6\$customSalt\$"'

Arbeitete an RHEL 6


4
2018-05-23 02:26





Warum führen Sie die folgenden Prüfungen und Änderungen an Centos / RHEL-Maschinen nicht durch, um sicherzustellen, dass das gesamte Hashing für Kennwörter für / etc / shadow mit sha512 durchgeführt wird. Dann können Sie Ihr passworkd normalerweise mit dem passwd Befehl einstellen

#Set stronger password hasing
/usr/sbin/authconfig --test | grep sha512 > /dev/null
if [ $? -ne 0 ]; then
echo "Configuring sha512 password hashing"
sudo /usr/sbin/authconfig --enableshadow --passalgo=sha512 --updateall
fi

2
2017-11-11 14:34





Hier ist ein One-Liner, der Shell-Befehle verwendet, um ein SHA-512 Hash-Passwort mit einem zufälligen Salz zu erzeugen:

[root @ host] mkpasswd -m sha-512 MyPAsSwOrD $ (openssl rand -base64 16 | tr -d '+ =' | head -c 16)

Anmerkungen

  1. Möglicherweise müssen Sie das Paket "whois" (Debian, SuSE usw.) installieren, das "mkpasswd" bereitstellt.
  2. Details zum Format von Zeilen in "/ etc / shadow" finden Sie in crypt (3).

2
2018-02-14 23:10



Leider die whois Paket von Fedora 18 bietet keine mkpasswd. - Cristian Ciupitu
In Arch Linux: / usr / bin / mkpasswd gehört zu expect 5.45-3 - Nowaker
Gleiches gilt für Fedora 20 und es macht noch etwas anderes. - Cristian Ciupitu
Leider hat der vorgeschlagene Befehl zwei Probleme: 1) Das angegebene Passwort wird jetzt in der Historie Ihrer Shell gespeichert und ist für jeden mit dem Befehl 'history' oder ähnlichem sichtbar. 2) Sie müssen nicht das zufällige Salz in der Befehlszeile eingeben - und ich denke, Sie sollten es von mkpasswd für Sie tun lassen, anstatt funky openssl-Tricks zu verwenden. (Bitte beachten Sie, dass dies mindestens auf Ubuntu Quantal zutrifft. Sie können es testen, indem Sie mehrmals 'mkpasswd -m sha-512 foo' ausführen. Sie sehen, wie sich das Salz ändert. Das Salz ist der Wert zwischen dem 2. und 3. $ -Zeichen. ) - oskarpearson


Lesen Sie den folgenden Kommentar, um mehr über die Sicherheitsimplikationen dieser Antwort zu erfahren

Für diejenigen der Ruby-Mentalität hier ist ein One-Liner:

'password'.crypt('$6$' + rand(36 ** 8).to_s(36))

2
2018-02-17 20:42



Das ist falsch: Rubys Rand-Funktion ist nicht sicher - es verwendet einen PRNG, so dass dies Ergebnisse generiert, die auf der Basis einer Schätzung der Zeit / des Status des Moments, in dem Sie dies ausgeführt haben, reverse-engineered werden können. - oskarpearson


HASH-Algos dienen zur Erstellung von MESSAGE-Digests, sie sind niemals für Passwörter geeignet, die eine Art HKDF verwenden sollten ( http://tools.ietf.org/rfc/rfc5869.txt ) - siehe PBKDF2 oder BCrypt


0
2017-07-30 09:05



Guter Punkt, aber man crypt sagt mir PBKDF2 wird nicht unterstützt. - Huygens


#!/usr/bin/env python

import getpass

from passlib.hash import sha512_crypt

if __name__ == "__main__":
    passwd = getpass.getpass('Password to hash: ')
    hash = sha512_crypt.encrypt(passwd)

    print hash

Sie können es aus meinem Github Repo klonen, wenn Sie möchten: https://github.com/antoncohen/mksha


0
2018-02-14 23:23