Por que o cygwin sha512 cria checksums diferentes dependendo do terminal?

2

Estou usando o Windows 7 e tenho o Cygwin e a ferramenta de linha de comando Git baseada em ming.

Quando eu emito o comando:

c:\>echo -n hello | e:\cygwin\bin\sha512sum

do Windows cmd, ele gera

91fe211053c6377ddfd218a061f96de1ca304b10d966a4c3572d9af22bbe86dc471653d0f9b14f923762d0bf83a0abfe285b855e1ee06b0d4ab4a60a8d8801e3 *-

que acredito estar incorreto .

No entanto, quando eu emito o comando

$ echo -n hello | /e/cygwin/bin/sha512sum

da linha de comando do git, ele gera

9b71d224bd62f3785d96d46ad3ea3d73319bfbc2890caadae2dff72519673ca72323c3d99ba5c11d7c7acc6e14b8c5da0c4663475c2e5c3adef46f73bcdec043 *-

que eu acredito ser o checksum hexadecimal correto. Eu estava assumindo que a mesma entrada está sendo enviada para o mesmo executável binário, mas isso não pode estar certo com o comportamento que estou vendo. O Windows CMD faz algum tipo de codificação engraçada que envia entradas diferentes para o binário do cygwin sha512?

EDITAR Para qualquer pessoa interessada em obter a soma de verificação correta a partir de um prompt padrão do Windows cmd, o truque é não usar o comando echo da janela (a resposta alude a isso). Usar o comando echo do cygwin gera a soma de verificação correta.

Por exemplo,

e:\cygwin\bin\echo -n hello | e:\cygwin\bin\sha512sum
    
por GojiraDeMonstah 20.02.2015 / 17:25

2 respostas

3

O comando% windowsecho padrão adiciona espaços e terminação de linha, mesmo que seja chamado com -n . Tente isto: echo -n hello > a.txt seguido por dir , e você verá que não tem um arquivo de 5 bytes.

    
por 20.02.2015 / 17:32
3

O echo padrão do windows não entende "-n". Então os dois comandos não são equivalentes.

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
    
por 12.07.2015 / 08:04