diff --git a/README.md b/README.md index 1194b27..e21994b 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ pairing with smart people at Hashrocket. For a steady stream of TILs, [sign up for my newsletter](https://crafty-builder-6996.ck.page/e169c61186). -_1488 TILs and counting..._ +_1489 TILs and counting..._ --- @@ -1443,6 +1443,7 @@ _1488 TILs and counting..._ - [Generate Random 20-Character Hex String](unix/generate-random-20-character-hex-string.md) - [Get A List Of Locales On Your System](unix/get-a-list-of-locales-on-your-system.md) - [Get Matching Filenames As Output From Grep](unix/get-matching-filenames-as-output-from-grep.md) +- [Get The SHA256 Hash For A File](unix/get-the-sha256-hash-for-a-file.md) - [Get The Unix Timestamp](unix/get-the-unix-timestamp.md) - [Global Substitution On The Previous Command](unix/global-substitution-on-the-previous-command.md) - [Globbing For All Directories In Zsh](unix/globbing-for-all-directories-in-zsh.md) diff --git a/unix/get-the-sha256-hash-for-a-file.md b/unix/get-the-sha256-hash-for-a-file.md new file mode 100644 index 0000000..620dd36 --- /dev/null +++ b/unix/get-the-sha256-hash-for-a-file.md @@ -0,0 +1,34 @@ +# Get The SHA256 Hash For A File + +Unix systems come with a `sha256sum` utility that we can use to compute the +SHA256 hash of a file. This means the contents of file are compressed into a +256-bit digest. + +Here I use it on a SQL migration file that I've generated. + +```bash +$ sha256sum migrations/0001_large_doctor_spectrum.sql +b75e61451e2ce37d831608b1bc9231bf3af09e0ab54bf169be117de9d4ff6805 migrations/0001_large_doctor_spectrum.sql +``` + +Each file passed to this utility gets output to a separate line which is why we +see the filename next to the hash. Since I am only running it on a single file +and I may want to pipe the output to some other program, I can clip off just +the part I need. + +```bash +sha256sum migrations/0001_large_doctor_spectrum.sql | cut -d ' ' -f 1 +b75e61451e2ce37d831608b1bc9231bf3af09e0ab54bf169be117de9d4ff6805 +``` + +We can also produce these digests with `openssl`: + +```bash +$ openssl dgst -sha256 migrations/0001_large_doctor_spectrum.sql +SHA2-256(migrations/0001_large_doctor_spectrum.sql)= b75e61451e2ce37d831608b1bc9231bf3af09e0ab54bf169be117de9d4ff6805 + +$ openssl dgst -sha256 migrations/0001_large_doctor_spectrum.sql | cut -d ' ' -f 2 +b75e61451e2ce37d831608b1bc9231bf3af09e0ab54bf169be117de9d4ff6805 +``` + +See `sha256sum --help` or `openssl dgst --help` for more details.