Подтвердить что ты не робот

Как создать хеш md5 в bash в Mac OS X

Как вы можете создать хеш md5 для строки на mac с помощью bash? md5sum не существует в моей среде. Я сделал man для md5, но я смущен тем, что это действительно делает.

md5 "string"

не возвращает хэш.

4b9b3361

Ответ 1

Это должно работать -

[jaypal:~/Temp] echo "this will be encrypted" | md5
72caf9daf910b5ef86796f74c20b7e0b

или если вы предпочитаете обозначение here string, тогда -

[jaypal:~/Temp] md5 <<< 'this will be encrypted'
72caf9daf910b5ef86796f74c20b7e0b

UPDATE:

На странице man вы можете играть с любой из следующих опций

-s string
        Print a checksum of the given string.

-p      Echo stdin to stdout and append the checksum to stdout.

-q      Quiet mode - only the checksum is printed out.  Overrides the -r option.


[jaypal:~/Temp] md5 -s 'this will be encrypted'
MD5 ("this will be encrypted") = 502810f799de274ff7840a1549cd028a

[jaypal:~/Temp] md5 -qs 'this will be encrypted'
502810f799de274ff7840a1549cd028a

Примечание: MD5 всегда создает тот же хеш. Причина, по которой вы находите результат, отличный от приведенного выше примера, объясняется тем, что было сделано в комментариях. В первых двух примерах используется конечный символ newline для создания хэша. Чтобы этого избежать, вы можете использовать:

[jaypal:~/Temp] echo -n "this will be encrypted" | md5
502810f799de274ff7840a1549cd028a

Ответ 2

Чтобы достичь того, что вы спросили:

md5 -s string

выходы: MD5 ( "строка" ) = b45cffe084dd3d20d928bee85e7b0f21

Ответ 3

OSX использует md5, но в большинстве стилей используется md5sum

Вот раздел rvm код проверки rvmrc, который находит правильный двоичный файл md5 и обертывает его.

__rvm_md5_for()
{
  if builtin command -v md5 > /dev/null; then
    echo "$1" | md5
  elif builtin command -v md5sum > /dev/null ; then
    echo "$1" | md5sum | awk '{print $1}'
  else
    rvm_error "Neither md5 nor md5sum were found in the PATH"
    return 1
  fi

  return 0
}

(Код из https://github.com/wayneeseguin/rvm/blob/master/scripts/functions/rvmrc)

Ответ 4

Из командной строки:

md5 <<< "String to hash"
8a0a39505c5753ff64a0377ab0265509

Ответ 5

Правильный способ сделать это - echo -n string | md5 echo -n string | md5 вместо echo "string" | md5 echo "string" | md5. (Я использую Zsh)

Преобразовать хеш md5, заданный echo -n string | md5 echo -n string | md5 вы получите обратно string.

Также работает md5 -s string которая уже указана здесь.

λ [~] → echo "string" | md5
b80fa55b1234f1935cea559d9efbc39a

λ [~] → echo -n string | md5
b45cffe084dd3d20d928bee85e7b0f21

λ [~] → md5 -s string
MD5 ("string") = b45cffe084dd3d20d928bee85e7b0f21

Ответ 6

Вы можете использовать некоторую случайность здесь, иначе пароль всегда будет таким же. Это должно работать:

dd if=/dev/random count=20|md5