3 ms·
It is a bit of effort, but you can make the computer do the verification for you by writing (or generating) a simple text file. Using Perl shasum because I'm on
by coldpie 4y ago
It is a bit of effort, but you can make the computer do the verification for you by writing (or generating) a simple text file. Using Perl shasum because I'm on a mac at the moment, but Linux sha256sum works the same:
$ echo hi > some_file
$ shasum -a 256 some_file > check
$ cat check
98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4 some_file
$ shasum -a 256 -c check
some_file: OK
$ echo $?
0
$ echo bye > some_file
$ shasum -a 256 -c check
some_file: FAILED
shasum: WARNING: 1 computed checksum did NOT match
$ echo $?
1
Edit: Oh cool, at least perl's shasum allows reading from stdin so you can even skip the file if you're just copying some check file off the software's website:
$ shasum -a 256 -c - <<EOF
> 98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4 some_file
> EOF
some_file: OK
- radlad 4y agoSomething like this also works: hash="4e575a5ee4af2925477c9eea887ff560d23a586dbaf90b616d26c47ec429ca13" [[ "$hash" == "$(shasum -a 256 file | awk '{print $1 }')" ]] && echo "Valid" || echo "Invalid checksum" I use that little if-statement in some build systems.
- coldpie 4y agoSee my edit, apparently shasum's -c can read from stdin so you could simplify your scriptlet even further :)
- lozf 4y agoIndeed, echo '98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4 some_file' | sha256sum -c also works (with and without passing `-n` to echo, because the `-c` option ensures the file is checked without even noticing any new line). Thanks :)
- jpdaigle 4y agoAny hash calculations using a "read from stdin or a pipe" strategy, in my experience, is fraught with issues caused by an extra newline at the end of the input possibly being there today, and not in later checks, or vice-versa. When people claim they wrote a prediction at some later date, they always have to document the EXACT command used to avoid this, e.g. `echo "smart prediction" | md5sum`
- coldpie 4y agoSure. The case in question is verifying a hash someone else gave you, so the problem you mention is present regardless of what verification method you're using.