私はWindows7を使用しており、CygwinとmingベースのGitコマンドラインツールの両方を使用しています。
コマンドを発行すると:
c:\>echo -n hello | e:\cygwin\bin\sha512sum
windowsコマンドから、それは生成します
91fe211053c6377ddfd218a061f96de1ca304b10d966a4c3572d9af22bbe86dc471653d0f9b14f923762d0bf83a0abfe285b855e1ee06b0d4ab4a60a8d8801e3 *-
私はそれを間違っただと信じています。
ただし、コマンドを発行すると
$ echo -n hello | /e/cygwin/bin/sha512sum
gitコマンドラインから、それは生成します
9b71d224bd62f3785d96d46ad3ea3d73319bfbc2890caadae2dff72519673ca72323c3d99ba5c11d7c7acc6e14b8c5da0c4663475c2e5c3adef46f73bcdec043 *-
これが正しい16進チェックサムだと思います。まったく同じ入力がまったく同じバイナリ実行可能ファイルに送信されていると想定していましたが、これは私が見ている動作では正しくありません。 Windows CMDは、cygwin sha512バイナリに異なる入力を送信するある種の面白いエンコーディングを実行しますか?
[〜#〜] edit [〜#〜]標準のWindowsコマンドプロンプトから正しいチェックサムを取得することに関心がある人にとって、トリックはウィンドウエコーコマンドを使用しないことです(答えはこれをほのめかします) 。 cygwinのechoコマンドを使用すると、正しいチェックサムが生成されます。
例えば。、
e:\cygwin\bin\echo -n hello | e:\cygwin\bin\sha512sum
デフォルトのwindowsecho
コマンドは、-n
で呼び出された場合でも、スペースと行末を追加します。これを試してください:echo -n hello > a.txt
の後にdir
を続けると、5バイトのファイルがないことがわかります。
デフォルトのウィンドウエコーは「-n」を理解しません。したがって、2つのコマンドは同等ではありません。
e:\cygwin64\bin>echo -n "hello" |od -c
0000000 - n " h e l l o " \r \n
0000015
$ echo -n "hello" |od -c
0000000 h e l l o
0000005