То, как создать SHA-512, хешировало пароль для тени?

Это - то, где GNU Убирает, может быть полезным. Я использовал этот инструмент в течение многих лет для содержания моей ОС в чистоте. Это - диспетчер пакетов для программ, установленных из источника. Вот то, как это работает. Во-первых, у меня есть один единственный каталог, где я сохраняю все такие программы, /usr/local/stow. В нем существуют каталоги для каждой программы. Когда я компилирую программы из источника, я использую опцию --prefix=/usr/local/stow/program-name. Когда make install сделан, исполняемые файлы установлены под /usr/local/stow/program-name/bin, библиотеки найдены в /usr/local/stow/program-name/lib, и т.д. Затем я работаю cd /usr/local/stow и sudo stow program-name. Последняя команда создает ссылки из /usr/local/stow/program-name/bin кому: /usr/local/bin/, от lib до /usr/local/lib, и т.д. Так, все файлы, которые принадлежат одной программе, расположены в одном каталоге.

Когда я хочу удалить или обновить программу, я работаю sudo stow -D program-name удалить ссылки и удалить каталог. Теперь, система является чистой, и я могу установить новую версию.

62
задан 8 March 2018 в 05:09
18 ответов

Вот один лайнер:

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

Python 3.3+ включает mksalt в крипту , что делает его использование намного проще (и безопаснее):

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

Если вы не предоставите аргумент для crypt.mksalt (он может принять crypt.METHOD_CRYPT , ... MD5 , SHA256 ] и SHA512 ), он будет использовать самый надежный из доступных.

Идентификатор хэша (номер после первого $ ) связан с используемым методом:

  • 1 -> MD5
  • 2a -> Blowfish (отсутствует в основной версии glibc; добавлен в некоторые дистрибутивы Linux)
  • 5 -> SHA-256 (начиная с glibc 2.7)
  • 6 -> SHA-512 (начиная с glibc 2.7 )

Я бы порекомендовал вам посмотреть, что такое соли и тому подобное, и, согласно smallclamgers, прокомментировать разницу между шифрованием и хешированием.

Обновление 1:Полученная строка подходит для сценариев теневого запуска и кикстарта. Обновление 2: Предупреждение. Если вы используете Mac, см. Комментарий об использовании этого параметра в python на Mac, где он не работает должным образом.

65
ответ дан 28 November 2019 в 19:31

Я не уверен, как SHA-512 связан с / etc / shadow . Эти пароли: crypt ed.

Но если вы хотите, чтобы пароль был хеширован с помощью SHA-512, вы можете сделать это с помощью echo -n the_password | sha512sum . Вы не можете использовать вывод для /etc/shadow.

-4
ответ дан 28 November 2019 в 19:31

Почему бы не выполнить следующую проверку и модификацию машин Centos / RHEL, чтобы гарантировать, что все хеширование паролей для / etc / shadow выполняется с помощью sha512. Затем вы можете просто настроить свой passworkd в обычном режиме с помощью команды passwd

#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
ответ дан 28 November 2019 в 19:31

В Debian вы можете использовать mkpasswd для создания паролей с разными алгоритмами хеширования, подходящими для / etc / shadow. Он включен в пакет whois (согласно apt-файлу)

mkpasswd -m sha-512
mkpasswd -m md5

для получения списка доступных алгоритмов хеширования типа:

mkpasswd -m help 

HTH

37
ответ дан 28 November 2019 в 19:31

Алгоритмы HASH предназначены для создания дайджестов MESSAGE, они никогда не подходят для паролей, которые должны использовать какой-то HKDF ( http://tools.ietf.org/rfc/rfc5869. txt ) - см. PBKDF2 или BCrypt

0
ответ дан 28 November 2019 в 19:31

Best Answer: grub-crypt

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
ответ дан 28 November 2019 в 19:31
#!/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

Вы можете клонировать его из моего репозитория github, если хотите: https://github.com/antoncohen/mksha

0
ответ дан 28 November 2019 в 19:31

Here is a one-liner that uses shell commands to create a SHA-512 hashed password with a random salt:

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

Notes

  1. You may need to install the "whois" package (Debian, SuSE, etc.), which provides "mkpasswd".
  2. See crypt(3) for details on the format of lines in "/etc/shadow".
2
ответ дан 28 November 2019 в 19:31

Это не один лайнер, но он может кому-то помочь:

import crypt, getpass, pwd, string, sys, random
randomsalt = ""
password = getpass.getpass()
choices = string.ascii_uppercase + string.digits + string.ascii_lowercase
for _ in range(0,8):
    randomsalt += random.choice(choices)
print crypt.crypt(password, '$6$%s$' % randomsalt)
0
ответ дан 28 November 2019 в 19:31

Прочтите комментарий ниже, чтобы узнать о последствиях этого ответа для безопасности

Для тех, кто придерживается мировоззрения Ruby, вот однострочник:

'password'.crypt('$6$' + rand(36 ** 8).to_s(36))
2
ответ дан 28 November 2019 в 19:31

Вот короткий C-код для генерации пароля SHA-512 в различных операционных системах типа Unix.

Файл: 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;
}

для компиляции:

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

использование:

passwd-sha512 <password> <salt (16 chars max)>
11
ответ дан 28 November 2019 в 19:31

Perl one-liner solution to generate SHA-512 hashed password:

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

Worked on RHEL 6

4
ответ дан 28 November 2019 в 19:31
$ htpasswd -c /tmp/my_hash user1
New password: 
Re-type new password: 
Adding password for user user1
$ cat /tmp/my_hash
user1:$apr1$oj1ypcQz$4.6lFVtKz2nr8acsQ8hD30

Очевидно, вы просто берете второе поле и можете удалить файл, как только добавите его в тень или для использования с sudo (все еще скорее всего shadow).

0
ответ дан 28 November 2019 в 19:31

Этот сценарий работал для меня на Ubuntu 12.04 LTS: https://gist.github.com/JensRantil/ac691a4854a4f6cb4bd9

#!/bin/bash
read -p "Enter username: " username
read -s -p "Enter password: " mypassword
echo
echo -n $username:$mypassword | chpasswd -S -c SHA512

У него есть следующие возможности, которых не хватает некоторым другим альтернативам:

  • Он надежно генерирует свою соль. Никто не должен полагаться на это вручную. Ever.
  • он не хранит ничего в истории оболочки.
  • для наглядности, он печатает, какой пользовательский пароль он сгенерировал, что может быть неплохо при генерации паролей многих пользователей.
1
ответ дан 28 November 2019 в 19:31

Взгляните на страницу руководства для crypt (3), и я думаю, вы обнаружите, что инструмент crypt был обновлен для использования glibc и sha256 (5 долларов США) и sha512 (6 долларов США), несколько раундов, гораздо больше соли и т. д.

Очевидно, что SHA512 имеет отношение к тому, как работает / etc / shadow.

Тем не менее, эта веб-страница была очень полезной - в частности, MKPASSWD, поскольку это решило МОЮ проблему.

Учитывая потенциально «потерянный» пароль, я могу использовать MKPASSWD и соль для генерации хэша SHA512 и подтвердить / отклонить список возможных паролей.

Я бы использовал Джона-потрошителя - но, по крайней мере, на моем оборудовании (Raspberry Pi) и моем бюджете (ничего) - Джон не может этого сделать (похоже, он не поддерживает расширенный материал crypt / glibc в raspbian free версия.

Имейте в виду, поскольку у меня достаточно прав для чтения / записи / etc / shadow, Я МОЖЕТ просто перезаписать хеш и продолжать жить ... это академическое упражнение.


ПРИМЕЧАНИЯ Заметки Glibc Версия этой функции для glibc2 поддерживает дополнительное шифрование.

   If salt is a  character  string  starting  with  the  characters
   "$id$" followed by a string terminated by "$":

          $id$salt$encrypted

   then instead of using the DES machine, id identifies the encryp‐
   tion method used and this then determines how the  rest  of  the
   password  string is interpreted.  The following values of id are
   supported:

          ID  | Method
          ─────────────────────────────────────────────────────────
          1   | MD5
          2a  | Blowfish (not in mainline glibc; added in some
              | Linux distributions)
          5   | SHA-256 (since glibc 2.7)
          6   | SHA-512 (since glibc 2.7)

   So  $5$salt$encrypted  is  an  SHA-256  encoded   password   and
   $6$salt$encrypted is an SHA-512 encoded one.
0
ответ дан 28 November 2019 в 19:31

Если вам нужна альтернатива однострочным файлам, написанным на perl / python, mkpasswd - хороший вариант. Хотя он включен в пакет Debian whois, он отсутствует в системах CentOS / RHEL. Я модифицировал версию mkpasswd для Debian и включил более сильный механизм генерации соли, основанный на OpenSSL. Полученный двоичный файл полностью сохраняет все параметры командной строки версии Debian. Код доступен на github и должен компилироваться для любого варианта Linux: mkpasswd

0
ответ дан 28 November 2019 в 19:31

Удивительно, что ни один ответ не предлагает простую команду openssl passwd с параметром -6. Может быть, он еще не был доступен в 2011 году?

Если вам все равно, вводить пароль в командной строке (рискуя, что он останется в истории команд), вы можете сделать следующее:

openssl passwd -6 YourPassword

Это сгенерирует соль , и выведите следующую строку:

$6$/57kpVAA/kuPUtzV$Ugxo0RTL2uXCvU7WH43c1qn0quMy2ve.qiBYJPG75tFgTN8gI5Jp/FYPXFOzIsASqVTqM42kjN2805VYLHKzm1

С опцией stdin он также может считывать пароль из STDIN (или файла), поэтому вы не оставите его в истории:

openssl passwd -6 -stdin
5
ответ дан 20 May 2020 в 21:31

После того, как клиент меняет пароль, вы можете скопировать зашифрованный пароль из / и т.д. / тень в файл кикстарта. Как это сделать:

export CRYPTED_PASSWORD=$(grep root /etc/shadow | cut –d ”:” –f 2)
echo "s;rootpw -–iscrypted .*;rootpw –-iscrypted $CRYPTED_PASSWORD;" > sed_script
sed –i –f sed_script template.ks
0
ответ дан 9 April 2021 в 09:32

Теги

Похожие вопросы