왜 sha256sum으로 SHA256 체크섬을 검증하는 것이 데비안에서 실패하고 우분투에서 작동합니까?


34

우분투 14.04에서 sha256sumcoreutils작품 나는 예상대로 :

echo 879dd0d7637876be4796f7e6f194a111d21088be85cfe717fc97e2e7f05e79d2 /tmp/myfile | sha256sum -c
/tmp/myfile: OK

그러나 Debian Wheezy에서 정확히 동일한 파일을 사용하는 동일한 명령이 실패합니다.

sha256sum: standard input: no properly formatted SHA256 checksum lines found

나는 이것을 이해하지 못한다. 데비안 쉘 스크립트에서 체크섬을 확실하게 확인하려면 어떻게해야합니까?


우분투 14.04에서 :

⟫ sha256sum --version
sha256sum (GNU coreutils) 8.21

Wheezy에서 :

$ sha256sum --version
sha256sum (GNU coreutils) 8.13

두 OS 모두의 맨 페이지는 다음과 같이 말합니다.

SYNOPSIS
       sha256sum [OPTION]... [FILE]...

DESCRIPTION
       Print or check SHA256 (256-bit) checksums.  With no FILE,
       or when FILE is -, read standard input.

[...]

       -c, --check
              read SHA256 sums from the FILEs and check them

답변:


45

간격에 관심이 있습니다. 당신이 실행하는 경우 :

sha256sum /dev/null

당신은 얻을

e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855  /dev/null

(두 칸). 그렇게 사용 echo하면 단어 사이에 공백이 하나만 있습니다.

버전 8.13은 출력이 정확한 형식을 원합니다 . 다음을 사용하는 경우 :

echo "$SUM  $FILE" | sha256sum -c

(다시 두 칸) 작동합니다. 최신 버전은 얼마나 많은 공간이 있는지 상관하지 않으므로 공간도 함께 작동합니다.


18
퀴즈 추가 : 두 번째 공백 문자는 실제로 의미가 있습니다. 체크섬이 텍스트 모드 에서 계산되었음을 나타냅니다 . 반대로 *파일 이름 앞에있는 이진 모드를 나타냅니다 . sha256sum -t /dev/null(텍스트 모드, 기본값) 의 출력을 sha256sum -b /dev/null(이진 모드) 와 비교하십시오 . 이것은 분명히 유닉스 / 리눅스에서 차이를 만들지 않지만 Windows에서는 가능 합니다.
Dubu
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.