2009-08-19 6 views
6

いずれは... ...BSD md5とGNU md5sumの出力形式はどちらですか? BSDのMD5プログラムはこの形式でハッシュ出力を生成する理由はGNUのmd5sumは次のようにはるかに賢明な形式を生成しながら、

MD5 (checksum.md5) = 9eb7a54d24dbf6a2eb9f7ce7a1853cd0 

を知っていますか?

9eb7a54d24dbf6a2eb9f7ce7a1853cd0 checksum.md5 

私の知る限り、md5sumのフォーマットは、解析する方がはるかに簡単です、より理にかなっています。どのようにmd5sum -checkとmd5をやりますか? -p、-q、-r、-t、-xオプションの意味は? man md5には、これらのオプションについては何も言及されていません。 :|

+0

はpoweruser/serverfaultのいずれかになる可能性がありますが、ここには実際に属していません。 – spender

+3

...それともスーパーユーザーですか?私は決して覚えていません – spender

+0

'md5 -r'は' md5sum'(チェックサム、ファイル名)と非常によく似たものを生成します。たとえば、 'find。 -type f -print0 | xargs -0 md5 -r'は、すべてのファイルのmd5チェックサムをリストします。 – Dave

答えて

4

歴史的な理由から一方、-qは "MD5(...)="を出力するので、md5 -q checksum.md5は

9eb7a54d24dbf6a2eb9f7ce7a1853cd0
を返します。

これは、md5に引数が指定されておらず、stdinから読み込んでいる場合に意味されます。 は、残念ながら、この場合のmd5sumの葉「 - 」チェックサムの背後にある(「9eb7a54d24dbf6a2eb9f7ce7a1853cd0 - 」)、 をので、あなたがチェックサムを返すために、いくつかの一般的な機能を探しているなら、ここに役立つかもしれないものである:

 
checksum() { 
     (md5sum <"$1"; test $? = 127 && md5 <"$1") | cut -d' ' -f1 
} 
checksum /etc/hosts 

FreeBSDのmanページ引数について語る

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

-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. 

0

一つはchecksumファイルを探し、checksum.md5ファイルの内容に対してチェックされますGNU md5sum -c checksum.md5を使用することができます。 Rubyのシステムコールの内部

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

例BSDフォーマットされた.md5ファイルに対してチェックする:これはtrueまたはfalseを返します

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

2

これは古いページだとわかりましたが、FreeBSDでチェックサムを作成してLinuxで確認していましたが、このページも出てきました。このページには、私は問題を解決する助けにはならなかったので、私は、Linux md5sum出力と一致FreeBSD上でチェックサムを作成するには、この小さなsedスクリプトを思い付いた:

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

これは、FreeBSD md5コマンドを使用して再配置します出力はGNU md5sumのようになります。 Linux上で次に

私はちょうどあなたがまた、FreeBSDのmd5コマンドによって作成される既存のファイルと上記sedスクリプトを使用することができますmd5sum --check md5sums.txt

を使用することができます。

私も自分のFreeBSDの.cshrcファイルにこのエイリアスを置く:私はちょうどmd5sum file1 file2 file3 ...を言うことができるし、それだけで動作しますFreeBSD上で今

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

+0

sedスクリプトは、centos6のGNU md5sumよりも1つ少ないスペースを私に与えました。 NBD、しかし "diff"はそれをわずかにマッサージせずに動作しませんでした。 –

3

現在のOS X BSDシステムでは、期待される出力を得るためにmd5 -rコマンドを指定することができます。私はLinuxマシンから生成されたLinuxのMD5和と差分に期待し、かつ容易にして、より似スイッチ-r MD5を追加

[email protected]:/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 

は、出力の外観をしました。

[email protected]:/vms/DevOps-v3.4$ md5 -r vmware* 
61ba1d68a144023111539abee08f4044 vmware-0.log 
97bc6f22b25833c3eca2b2cc40b83ecf vmware-1.log 
f92a281102710c4528d4ceb88aa0ac9b vmware-2.log 
1f7858d361929d4bc5739931a075c0ad vmware.log 

これは私が作るするための最も簡単な方法は、Linuxボックスににmd5sumコマンドによって生成された出力からの差分に簡単ですしました。

関連する問題