Как передать результат хеша md5 по каналу в оболочке

Существует несколько вариантов минимальных, агентов передачи почты только для реле (MTAs или "почтовые серверы"), некоторые из которых были упомянуты в других ответах:

Для любого из тех для работы Вам нужен абсолютный MTA где-нибудь, который далее передаст Ваши сообщения (известный как "почтовый концентратор"), и настоятельно рекомендуется управлять этим почтовым концентратором. Плохой Things™ может произойти иначе.

12
17.08.2011, 01:24
3 ответа

Можно использовать сокращение команды; это позволяет, Вы для вырезания определенного символа/байт колеблетесь от каждой входной строки. Так как хеш MD5 имеет фиксированную длину (32 символа), можно использовать опцию -c 1-32 сохранять только первые 32 символа от входной строки:

echo -n test | md5sum | cut -c 1-32

С другой стороны, можно сказать cut разделять строку в каждом пространстве и производить только первое поле: (отметьте кавычки вокруг пробела),

echo -n test | md5sum | cut -d " " -f 1

См. страницу справочника сокращения для большего количества опций.

14
27.01.2020, 19:55
  • 1
    я думал об этом также! Я выбрал -d+-f так, чтобы md5sum может быть заменен sha1sum или безотносительно позже. –  Stéphane Gimenez 17.08.2011, 01:45
  • 2
    awk работы также: echo -n test | md5sum | awk -F" " '{print $1}' или awk -F" " '{print $1}' <(echo -n test | md5sum) –  laebshade 17.08.2011, 02:48
  • 3
    Спасибо за ответ. @laebshade На самом деле, необходимо ли использовать printf иначе, он произведет символ новой строки в Потрясающем ;) –  nmat 17.08.2011, 05:25
  • 4
    @laebshade: -F" " опция к awk является очень странным для наблюдения, учитывая, что это - значение по умолчанию для awk. –  enzotib 17.08.2011, 07:43

Вы можете cut это:

echo -n 'test' | md5sum | cut -d' ' -f1

Здесь, -d' ' выбирает пространство в качестве разделителя, и -f1 просит первое поле (перед разделителем).

3
27.01.2020, 19:55

Использование awk тоже работает нормально:

echo -n 'test' | md5sum | awk '{print $1}'

Другой способ делает подстроку. Потому что вы знаете, HASH MD5 - это строка с 32 символами, вы можете использовать:

HASH=$(echo -n 'test' | md5sum -) && echo ${HASH:0:32}

Это просто строковые манипуляции, поэтому у вас есть выбор!

2
27.01.2020, 19:55

Теги

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