Как мне получить те же результаты, что и вывод крипты и соли Linux?

Я использовал следующую команду на своем компьютере с Ubuntu «openssl passwd -crypt — salt pass book» для создания соленого пароля.

Из какого хеша состоит вывод? например, SHA-512, MD5 и т. д. Кроме того, мне интересно, как это сделано. Например, получается ли это путем хеширования «сберегательной книжки» вместе?

Мне нужно больше информации о том, какой алгоритм хэширования/алгоритм используется для создания вывода, который я вижу.

Спасибо


person BubbleMonster    schedule 20.08.2018    source источник


Ответы (1)


Результат, предоставляемый приложением openssl passwd при использовании алгоритма -crypt, кажется таким же, как результат, предоставляемый функцией crypt() Linux/Unix. Вы можете проверить это с помощью следующего (быстрого и грязного) фрагмента кода:

#include <crypt.h>
#include <stdio.h>

int main(
  int argc,
  char **argv)
{
  char *key = argv[1];
  char *salt = argv[2];
  char *enc = crypt(key, salt);
  printf("key = \"%s\", salt = \"%s\", enc = \"%s\"\n",
    key ? key:"NULL", salt ? salt:"NULL", enc ? enc:"NULL");
}

Результат:

$ ./main book pass
key = "book", salt = "pass", enc = "pahzZkfwawIXw"
$ openssl passwd -crypt -salt pass book
pahzZkfwawIXw

Точные детали того, как функция crypt() кажется наиболее ясно объясненной в ее OSX справочная страница, в частности:

Traditional crypt:
  The first 8 bytes of the key are null-padded, and the low-order 7 bits of each character is
  used to form the 56-bit DES key.

  The salt is a 2-character array of the ASCII-encoded salt.  Thus, only 12 bits of salt are
  used.  count is set to 25.

Algorithm:
  The salt introduces disorder in the DES algorithm in one of 16777216 or 4096 possible ways
  (ie. with 24 or 12 bits: if bit i of the salt is set, then bits i and i+24 are swapped in
  the DES E-box output).

  The DES key is used to encrypt a 64-bit constant, using count iterations of DES.  The value
  returned is a null-terminated string, 20 or 13 bytes (plus null) in length, consisting of
  the salt, followed by the encoded 64-bit encryption.
person Reinier Torenbeek    schedule 22.08.2018