Brett Code

_ALPHA_CHANNEL_
_command_line_
_image_manipulations_


Get-FileHash

I work in C:\alpha>, so the following code saves the given "text string" ("cat" or "dog") in the named file.

C:\alpha> "cat" > cat.txt
C:\alpha> "dog" > dog.txt
C:\alpha> "cat" > liar.txt


Get-FileHash [file_name] returns the SHA256 Hash of the named file.

C:\alpha> Get-FileHash cat.txt
SHA256 9CC5AB4814B62C4AD6A3...

C:\alpha> Get-FileHash dog.txt
SHA256 A399A0812D4ABB07773A...

C:\alpha> Get-FileHash liar.txt
SHA256 9CC5AB4814B62C4AD6A3...

The Hash for cat.txt and liar.txt are the same. So, it is the contents of the file that are Hashed and not any of the meta-data.


If I make a file named npp.txt with Notepad++ containing the text 'cat' and run Get-FileHash, I get a different Hash, presumably because the BOM (the four binary header digits, I believe) is set up differently.

C:\alpha> Get-FileHash liar.txt
SHA256 77AF778B51ABD4A3C51C5...


And to some extent, a listing of the directory (with output truncated for ease of viewing) confirms this hypothesis (note the lengths).
C:\alpha> dir

Mode     Length   Name
----     ------   ----
d-----            ffmpeg
d-----            gmic
-a----       12   cat.txt
-a----       12   dog.txt
-a----       12   liar.txt
-a----       3    npp.txt

ls is an acceptable alias for dir, which in turn is an alias for Get-ChildItem. I found this out by running Get-Help dir. Interestingly enough, gci is another alias. I was wonder if gci was from the Solaris Operating System, as dir is DOS and ls is Linux. But after a few moments, I realized gci is just the first letters of Get-ChildItem. As an aside, I only became interested in Get-FileHash because I wanted to Hash a string (and not a file). It turns out there is a very easy way to do this by using the gethashcode() command.

PS C:\alpha> 'cat'.gethashcode()
-1741487357
PS C:\alpha> 'dog'.gethashcode()
-1432180093

PS C:\alpha> $dog_string = 'dog'
PS C:\alpha> $dog_string
dog
PS C:\alpha> $cat_string = 'cat'
PS C:\alpha> cat
cat

PS C:\alpha> $cat_string.gethashcode()
-1741487357
PS C:\alpha> $dog_string.gethashcode()
-1432180093
PS C:\alpha>

Note: GetHashCode() is only intended to be used internally to confirm two objects are the same (and not for Security Applications).

more
ALPHA CHANNEL
command line image manipulations

© copyright 2019 Brett Paufler
paufler.net@gmail.com