Я использую Windows 7 и у меня есть и Cygwin, и инструмент командной строки Git на основе Ming.
Когда я выдаю команду:
c:\>echo -n hello | e:\cygwin\bin\sha512sum
из Windows cmd генерирует
91fe211053c6377ddfd218a061f96de1ca304b10d966a4c3572d9af22bbe86dc471653d0f9b14f923762d0bf83a0abfe285b855e1ee06b0d4ab4a60a8d8801e3 *-
который я считаю неправильным.
Тем не менее, когда я выдаю команду
$ echo -n hello | /e/cygwin/bin/sha512sum
из командной строки git генерирует
9b71d224bd62f3785d96d46ad3ea3d73319bfbc2890caadae2dff72519673ca72323c3d99ba5c11d7c7acc6e14b8c5da0c4663475c2e5c3adef46f73bcdec043 *-
который я считаю правильной шестнадцатеричной контрольной суммой. Я предполагал, что точно такой же ввод отправляется точно в тот же двоичный исполняемый файл, но это не может быть правильным с поведением, которое я вижу. Windows CMD выполняет какую-то забавную кодировку, которая отправляет различные данные в двоичный файл cygwin sha512?
РЕДАКТИРОВАТЬ Для тех, кто заинтересован в получении правильной контрольной суммы из стандартного приглашения Windows cmd, уловка заключается в том, чтобы не использовать команду window echo (ответ на это ссылается). Использование команды echo в cygwin создает правильную контрольную сумму.
Например,
e:\cygwin\bin\echo -n hello | e:\cygwin\bin\sha512sum