Intereting Posts
OpenBSD: переместить каталоги, большие, чем X, в новый каталог передавать много похожих файлов по ssh Печать EPS-файла с оригинальным размером, но измененное положение «Использовать почту» из командной строки Как установить расширение php-solr на Centos 6.6 Какое правило iptables заставляет vpn не подключаться? Как преобразовать дату в миллисекунды с момента Unix в bash? Как выполнить команду внутри сценария оболочки без открытия новой оболочки Dropbox, notify-send и OSD вмешиваются в Ctrl-ярлыки Несовместимые версии libsqlite3-0 (i386 и amd64) блокируют друг друга Проблема пунктуации с использованием grep для получения n слов вокруг токена Анализ использования диска для корневого раздела, за исключением других разделов, смонтированных с помощью программы GUI? Путайте мой IP-стек Как я могу заставить mutt автоматически выбирать pgp-ключи? rsync: –fuzzy не определяет изменения имени с помощью link-dest

Трейлинг пространства при генерации md5

Прошу прощения, если на это уже был дан ответ, или если ответ проще, чем я понимаю, но я не могу понять, что следующее:

Когда я пытаюсь создать md5 из строки, либо с помощью

echo -n "string" | md5sum | cut -f1 -d' ' 

или с

 echo -n "string" | openssl md5 

результат не 32 символа, как я ожидал, а 33 (используя wc -c ).

Итак, у меня есть несколько вопросов:

  1. Почему оба md5sum и openssl добавляют конечное пространство?
  2. Есть ли другой способ генерации хеша md5 без конечной новой строки или пробела?
  3. Действительно ли конечное пространство имеет значение?

Спасибо всем заранее.

Это 32 символа! Команда md5sum добавляет конец строки в конец. Вы можете избавиться от него так:

 % echo -n string | md5sum|awk '{print $1}'|wc -c 33 % echo -n $(echo -n string | md5sum|awk '{print $1}')|wc -c 32 

или вы можете сделать это следующим образом:

 % echo -n $(md5sum <<< 'string'|awk '{print $1}')|wc -c 32 

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

 [prompt %] echo -n $(md5sum <<< 'string'|awk '{print $1}') b80fa55b1234f1935cea559d9efbc39a[prompt %]