BSD md5 vs GNU md5sum výstupního formátu?

hlasů
6

Někdo ví, proč BSD md5 Program vytvoří hash výstup v tomto formátu ...

MD5 (checksum.md5) = 9eb7a54d24dbf6a2eb9f7ce7a1853cd0

... zatímco GNU md5sum produkuje mnohem více rozumné formátu takhle?

9eb7a54d24dbf6a2eb9f7ce7a1853cd0 checksum.md5

Pokud je mi známo, je formát md5sum je mnohem jednodušší rozebrat a dává větší smysl. Jak to děláte md5sum -checks MD5? A co -p, -q, -r, -t, -x možnosti znamenají? man md5neříká nic o těchto možnostech! : |

Položena 19/08/2009 v 14:11
zdroj uživatelem
V jiných jazycích...                            


4 odpovědí

hlasů
4

Z historických důvodů, myslím. Mezitím -q potlačí "MD5 (...) =" výstup, takže md5 -q checksum.md5 dává

9eb7a54d24dbf6a2eb9f7ce7a1853cd0

To je naznačeno, je-li md5 nedostali žádné argumenty, a to čte ze standardního vstupu. Bohužel md5sum v tomto případě ponechává „-“ za kontrolní součet ( „9eb7a54d24dbf6a2eb9f7ce7a1853cd0 -“), takže pokud hledáte nějakou generické funkce vrátit kontrolní vy, zde je to, co by mohlo pomoci:

kontrolní součet () {
        (Md5sum < "$ 1";? Test $ = 127 && md5 < "$ 1") | cut -d‘ '-F1
}
Kontrolní součet / etc / hosts

manuálové stránky FreeBSD říká o argumentech

   -p Echo stdin na standardní výstup a připojit kontrolní součet na standardní výstup.

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

 -r      Reverses the format of the output.  This helps with visual diffs.
         Does nothing when combined with the -ptx options.

 -t      Run a built‐in time trial.

 -x      Run a built‐in test script.

Odpovězeno 20/08/2009 v 11:31
zdroj uživatelem

hlasů
3

Na současných OS X systémy BSD můžete zadat md5 -r příkazu získat očekávaný výstup.

sgwilbur@gura:/vms/DevOps-v3.4$ md5 vmware*
MD5 (vmware-0.log) = 61ba1d68a144023111539abee08f4044
MD5 (vmware-1.log) = 97bc6f22b25833c3eca2b2cc40b83ecf
MD5 (vmware-2.log) = f92a281102710c4528d4ceb88aa0ac9b
MD5 (vmware.log) = 1f7858d361929d4bc5739931a075c0ad

Přidání md5 -r přepínač dosažený výstupní vzhled spíš jsem očekával, a snadněji diff s linux md5 částkami, které byly vyrobeny ze zařízení Linux.

sgwilbur@gura:/vms/DevOps-v3.4$ md5 -r vmware*
61ba1d68a144023111539abee08f4044 vmware-0.log
97bc6f22b25833c3eca2b2cc40b83ecf vmware-1.log
f92a281102710c4528d4ceb88aa0ac9b vmware-2.log
1f7858d361929d4bc5739931a075c0ad vmware.log

Jednalo se o nejjednodušší postup pro mě, aby se snadno diff z výstupu generovaného md5sum příkaz na linux box.

Odpovězeno 27/05/2014 v 13:57
zdroj uživatelem

hlasů
2

Uvědomuji si, to je stará stránka, ale byl jsem dělat kontrolních součtů na FreeBSD a ověřuje je na Linuxu a narazil jsem na této stránce příliš. Tato stránka nepomohlo mi vyřešit tento problém, takže jsem přišel s tímto malým sedpísmem na vytvoření kontrolních součtů na FreeBSD, které odpovídají Linux md5sumvýstup:

md5 file [file ...] | sed -e 's#^MD5 [(]\(.*\)[)] = \(.*\)$#\2 \1#' > md5sums.txt

To bude používat FreeBSD md5příkazu a uspořádat výstup vypadat jako GNU md5sum.

Pak na Linuxu mohu jen používat md5sum --check md5sums.txt

Můžete také použít výše uvedený sedscénář s existující soubor produkoval FreeBSD md5příkazu.

Také jsem dal tento alias v mém .cshrc tohle FreeBSD:

alias md5sum "md5 \!* | sed -e '"'s#MD5 [(]\(.*\)[)] = \(.*\)$#\2 \1#'"'"

Nyní na FreeBSD můžu jen říct, md5sum file1 file2 file3 ...a to prostě funguje.

Odpovězeno 23/12/2013 v 02:34
zdroj uživatelem

hlasů
0

Dá se použít GNU md5sum -c checksum.md5, který bude hledat checksumsoubor a kontrolovat proti checksum.md5obsahu souboru.

md5sum -c checksum.md5 | grep "checksum: OK" -

Příklad uvnitř systémové volání Ruby zkontrolovat proti BSD formátovaný .md5 souboru:

system("md5sum -c checksum.md5 | grep \"checksum: OK\" -")

To vrátí true nebo false.

Odpovězeno 08/05/2013 v 04:08
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more