voidhash
voidhash
voidhash creates a .sfv, .md5, .sha1 and .sha256 file containing a hash and filename for all files in the specified path (recurses subfolders).
.sfv, .md5, .sha1 and .sha256 files are created in each directory using the parent folder name.
Does nothing if the .sfv, .md5, .sha1 and .sha256 file already exists and has a file size. (doesn't overwrite existing hashes)
Does not change the date modified timestamp on folders.
voidhash is designed for static / archive folders.
voidhash-1.0.1.3.zip
Source code included.
Usage:
voidhash.exe [options] <path>
Example: voidhash.exe -sha256 "D:\Backup"
Options:
-sfv
-md5
-sha1
-sha256
-sha512
Specify hash algorithms.
Default is: -sfv -md5 -sha1 -sha256
-bufsize <size>
Specify buffer size in bytes
Default is: -bufsize 8388608
-nosubfolders
Ignore subfolders
Default is to recurse subfolders.
Example usage:
DIR C:\Everything
Everything.exe
voidhash.exe C:\Everything
DIR C:\Everything
Everything.exe
Everything.sfv
Everything.md5
Everything.sha1
Everything.sha256
Everything.sha256 example:
bbd01c54a6fc88301ec4f219b7cf1092d329897f837a74ad0dd0f8a357c7e1d7 *Everything.exe
To check the integrity of a file I recommend 7zip.
You can also use the Everything sfv pass, md5sum pass, sha1sum pass, sha256sum pass properties and view CRC32, MD5, SHA1, SHA256 properties in Everything.
sha256sum
sha1sum
md5sum
sfv
.sfv, .md5, .sha1 and .sha256 files are created in each directory using the parent folder name.
Does nothing if the .sfv, .md5, .sha1 and .sha256 file already exists and has a file size. (doesn't overwrite existing hashes)
Does not change the date modified timestamp on folders.
voidhash is designed for static / archive folders.
voidhash-1.0.1.3.zip
Source code included.
Usage:
voidhash.exe [options] <path>
Example: voidhash.exe -sha256 "D:\Backup"
Options:
-sfv
-md5
-sha1
-sha256
-sha512
Specify hash algorithms.
Default is: -sfv -md5 -sha1 -sha256
-bufsize <size>
Specify buffer size in bytes
Default is: -bufsize 8388608
-nosubfolders
Ignore subfolders
Default is to recurse subfolders.
Example usage:
DIR C:\Everything
Everything.exe
voidhash.exe C:\Everything
DIR C:\Everything
Everything.exe
Everything.sfv
Everything.md5
Everything.sha1
Everything.sha256
Everything.sha256 example:
bbd01c54a6fc88301ec4f219b7cf1092d329897f837a74ad0dd0f8a357c7e1d7 *Everything.exe
To check the integrity of a file I recommend 7zip.
You can also use the Everything sfv pass, md5sum pass, sha1sum pass, sha256sum pass properties and view CRC32, MD5, SHA1, SHA256 properties in Everything.
sha256sum
sha1sum
md5sum
sfv
Re: voidhash
Works.
Salamander has a Plugins | Checksum -> Verify Checksums...
& the .md5, .sfv, .sha, .sha256 all check out just fine.
If you (CWD), you end up with filenames ..md5, ..sha1, ..sha256 ...
I suppose that's fine.
If you, you end up with BASENAME.md5, BASENAME.sha ...
& the hashes are placed in PATH.
xxHash (for fast* non-crypto hash) .
*"fast" may depend on the device. Like if you have an abysmally slow external HDD (30MB/s), limiting factor is going to be "bus" throughput rather then hash speed.
xxHash has a number of algorithms (with somewhat confusing terminology), with XXH3 being the fastest (over XXH128, by a hair), XXH128 just about equal, XXH64 (default) slower. XXH3 & XXH64 have the same length hash. XXH128 is 2x the length. (So when visually reading, one may prefer XXH3 over XXH128 for that reason.)
Salamander has a Plugins | Checksum -> Verify Checksums...
& the .md5, .sfv, .sha, .sha256 all check out just fine.
If you
voidhash .
I suppose that's fine.
If you
voidhash PATH
& the hashes are placed in PATH.
xxHash (for fast* non-crypto hash) .
*"fast" may depend on the device. Like if you have an abysmally slow external HDD (30MB/s), limiting factor is going to be "bus" throughput rather then hash speed.
xxHash has a number of algorithms (with somewhat confusing terminology), with XXH3 being the fastest (over XXH128, by a hair), XXH128 just about equal, XXH64 (default) slower. XXH3 & XXH64 have the same length hash. XXH128 is 2x the length. (So when visually reading, one may prefer XXH3 over XXH128 for that reason.)
Re: voidhash
voidhash.exe "c:\folder\" does not create sidecar files
voidhash.exe c:\folder\ does create sidecar files without basename (".md5", etc)
(note the trailing backslash)
voidhash.exe c:\folder\ does create sidecar files without basename (".md5", etc)
(note the trailing backslash)
Re: voidhash
(Optional) Stats (like from FcHash) ?
(That would make it easier to compare performance. FcHash doesn't output to .md5..., but still)
Recursion (subdirectories)?
Total: 248files, 109.5MiB, 0.7sec, 163.1MiB/s
(That would make it easier to compare performance. FcHash doesn't output to .md5..., but still)
Recursion (subdirectories)?
Re: voidhash
If you use forward slashes - as should be , voidhash appears to go through the motions, but nothing is actually done.
(Well, I had to see what would happen if I tried .)
Code: Select all
C:\TMP\1099>vhash c:/tmp/1099
voidhash 1.0 (c) voidtools 2022
parse c:/tmp/1099
parse c:/tmp/1099...
parse c:/tmp/1099\X...
C:\TMP\1099>vhash c:\tmp\1099
voidhash 1.0 (c) voidtools 2022
parse c:\tmp\1099
parse c:\tmp\1099...
parse c:\tmp\1099\X...
Re: voidhash
That's cause I've already (temporarily) named FcHash as hash.exe, so I guess vhash.exe will have to do for now.
Fails on LFN.
The 3647222921wleabcEoxlt-eengsairo.files.md5 ... files are created, but are 0-bytes.
(LFN support is one reason FcHash is appealing to me.)
Fails on LFN.
Code: Select all
C:\TMP\1099>vhash "C:\Local\SANDBOX\CLEAN\drive\E\Program Files\Mozilla Firefox
91.0\PROFILE\storage\default\moz-extension+++334f1b5b-4f41-4a3f-b743-0da5d57ee10
d^userContextId=4294967295\idb\3647222921wleabcEoxlt-eengsairo.files"
voidhash 1.0 (c) voidtools 2022
parse C:\Local\SANDBOX\CLEAN\drive\E\Program Files\Mozilla Firefox 91.0\PROFILE\
storage\default\moz-extension+++334f1b5b-4f41-4a3f-b743-0da5d57ee10d^userContext
Id=4294967295\idb\3647222921wleabcEoxlt-eengsairo.files
parse C:\Local\SANDBOX\CLEAN\drive\E\Program Files\Mozilla Firefox 91.0\PROFILE\
storage\default\moz-extension+++334f1b5b-4f41-4a3f-b743-0da5d57ee10d^userContext
Id=4294967295\idb\3647222921wleabcEoxlt-eengsairo.files...
CreateFileW C:\Local\SANDBOX\CLEAN\drive\E\Program Files\Mozilla Firefox 91.0\PR
OFILE\storage\default\moz-extension+++334f1b5b-4f41-4a3f-b743-0da5d57ee10d^userC
ontextId=4294967295\idb\3647222921wleabcEoxlt-eengsairo.files\xxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx012345678999-255.char.name.part.incl.extension.txt
(LFN support is one reason FcHash is appealing to me.)
Re: voidhash
A switch is needed to select (particular) hash methods (in addition to defaulting to all available).
Re: voidhash
Also switches for sha512 and inclusion of bytesize values
Re: voidhash
Thanks for the feedback guys,
Hashing speed is likely going to come down to disk IO.
I have put on my TODO list:
canonicalize path argument. (convert . to an absolute path)
remove trailing \ in path argument
stat output
disable recursion option
convert forward slashes (/) to backslashes (\).
LFN support
hash algorithm switches. (if none specified use all, eg: /sha1 /md5 /sfv)
sha512 support
option to save file size in .md5, .sha1 and .sha256 output.
Thank you for the suggestions.
I wasn't expecting any interest in voidhash.
This is just a tool I wrote for personal use.
It's only a few lines of code.
This might be a good place to recommend other hashing tools.
Hashing speed is likely going to come down to disk IO.
I have put on my TODO list:
canonicalize path argument. (convert . to an absolute path)
remove trailing \ in path argument
stat output
disable recursion option
convert forward slashes (/) to backslashes (\).
LFN support
hash algorithm switches. (if none specified use all, eg: /sha1 /md5 /sfv)
sha512 support
option to save file size in .md5, .sha1 and .sha256 output.
Thank you for the suggestions.
I wasn't expecting any interest in voidhash.
This is just a tool I wrote for personal use.
It's only a few lines of code.
This might be a good place to recommend other hashing tools.
Re: voidhash
For 20 years I've loved the idea of competing hash functions, and watched as new ones supplanted old ones in HashTab / HashCheck. If you've written any of your own functions, I'd live to see how they stack up against those in common circulation.
The thing that all hashers seem to lack is parallel hashing of multiple algorithms and recycling work so the same operations aren't performed twice. Eg, if you know you're going to be hashing SHA256 and SHA512, why not do them together. I don't think anybody does, yet.
The thing that all hashers seem to lack is parallel hashing of multiple algorithms and recycling work so the same operations aren't performed twice. Eg, if you know you're going to be hashing SHA256 and SHA512, why not do them together. I don't think anybody does, yet.
Re: voidhash
voidhash does this!if you know you're going to be hashing SHA256 and SHA512, why not do them together
7zip does too.
voidhash will only read content once.
I can look into multiple threads for voidhash (one thread per algorthim).
Thanks for the suggestions.
Re: voidhash
Just curious... it is stated that existing hashfiles are left alone, but this is only valuable when the folder content is utter static. How about updates? And how about having it team up with Everything, using the DM of the hashfile to check if files have been altered after hash file generation?
Re: voidhash
voidhash is designed for static / archive folders.
I've put on my TODO list:
to add an option to regenerate sidecar files.
add missing files to the sidecar file.
I will look into to an option to update only changed files by tracking file timestamps.
Thank you for the suggestions.
I've put on my TODO list:
to add an option to regenerate sidecar files.
add missing files to the sidecar file.
I will look into to an option to update only changed files by tracking file timestamps.
Thank you for the suggestions.
Re: voidhash
voidhash-1.0.1.1.zip
- canonicalize path argument. (convert . to an absolute path)
- remove trailing \ in path argument.
- disable recursion option -nosubfolders
- convert forward slashes (/) to backslashes (\).
- added hash algorithm switches. (if none specified use all, eg: -sha256 -sha1 -md5 -sfv)
- added multiple thread support. (one thread per algorithm)
- added timing information.
- added long filename support.
- added sha512 support.
Re: voidhash
Dear David
is there a solution for making generated hash by voidhash compatible with 7zip hash checker(via rightclick on hash-> 7zip->crc sha->test archive:checksum)?
is there a solution for making generated hash by voidhash compatible with 7zip hash checker(via rightclick on hash-> 7zip->crc sha->test archive:checksum)?
Re: voidhash
I recommend using 7zips CRC SHA -> * context menu and manually checking the computed crc/sha against voidhash.
There might be tools out there that can check .sfv, .md5, .sha1 and .sha256 files with a context menu item.
Please recommend any here if you know of one.
Everything has the SFV Pass, md5sum Pass, sha1sum Pass, sha256sum Pass and sha512sum Pass properties for file verification (slow).
There might be tools out there that can check .sfv, .md5, .sha1 and .sha256 files with a context menu item.
Please recommend any here if you know of one.
Everything has the SFV Pass, md5sum Pass, sha1sum Pass, sha256sum Pass and sha512sum Pass properties for file verification (slow).
Re: voidhash
It looks like forward slashes - like in c:/folder/ - are still unsupported in v1.0.1.2 ?
No sidecar files are being generated with the following command in CMD:
No sidecar files are being generated with the following command in CMD:
Code: Select all
T:\>\voidhash-1.0.1.2\voidhash.exe t:/logs/
voidhash 1.0.1.2 (c) voidtools 2022
T:\>
Re: voidhash
The sidecar files might already exist.
voidhash will not overwrite existing sidecar files.
Updating sidecar files is on my TODO list.
Please try deleting the existing .sfv, .md5 .sha1 and .sha256 files and calling voidhash again.
Please try version 1.0.1.3.
Does the issue persist?
voidhash will not overwrite existing sidecar files.
Updating sidecar files is on my TODO list.
Please try deleting the existing .sfv, .md5 .sha1 and .sha256 files and calling voidhash again.
Please try version 1.0.1.3.
Does the issue persist?
Re: voidhash
With version 1.0.1.3 I get the expected results (there were no previous sidecar files in the testfolders, btw.)
"Problem" solved!
"Problem" solved!
Re: voidhash
after 1h try and error finally i find a nice program that successfully support checking file integrity via all kind of hash generated by "voidhash".
multihasher is downloadable via this link
https://www.abelhadigital.com/multihasher/
multihasher is downloadable via this link
https://www.abelhadigital.com/multihasher/
Re: voidhash
In addition to "sidecars" (of a directory), option to output straight hashes (of file(s))?
And, vhash.exe -?|-h.
(Heh. Oh, it's there, simply by virtue of not entering any arguments.)
Oh, I bet it's cause I'm using (.). Nope.
Well color me confused. There they are, in each (non-empty) subdirectory.
(Wonder if I ever tested on a non-empty tree?)
Maybe an option to specify the output file name?
As it is if I hash DIRX & "DIRX - copy", I end up with DIRX.md5 & "DIRX - copy.md5".
Some file managers, with some operations (like a Compare) will (by default) automatically pick up the same named file in the other panel. So if I have both directories open, one in each panel, & I'm sitting on DIRX.md5 (in 1 panel), I can Ctrl+Shift+C (Compare Files), & it will automatically (attempt) to pick up a file named DIRX.md5 - from the other panel. And if the file names are the same, the compare proceeds, at that point.
As it is now, with differing file names, I'd need to highlight the wanted filename in the other panel, first.
So instead of an automatic FileCompare DIRX.md5 against DIRX.md5 (from two different directories), I need to hightlight the wanted file in the other panel, so that I end up with FileCompare DIRX.md5 against "DIRX - copy.md5".
If I could voidhash -o 0hash (or ..0hash, or...), specifying 0hash as the output filename(s), then when I go to compare hashes from different directories, I need on select that 1 file in my file manager.
(I'll just note that 7-zip [at lease 7z.exe] can additionally do CRC32, CRC64, BLAKE2sp [but not sfv or sidecars].)
And, vhash.exe -?|-h.
(Heh. Oh, it's there, simply by virtue of not entering any arguments.)
I'm still not seeing that?all files in the specified path (recurses subfolders)
Oh, I bet it's cause I'm using (.). Nope.
Well color me confused. There they are, in each (non-empty) subdirectory.
(Wonder if I ever tested on a non-empty tree?)
Nice.Does not change the date modified timestamp on folders.
Maybe an option to specify the output file name?
As it is if I hash DIRX & "DIRX - copy", I end up with DIRX.md5 & "DIRX - copy.md5".
Some file managers, with some operations (like a Compare) will (by default) automatically pick up the same named file in the other panel. So if I have both directories open, one in each panel, & I'm sitting on DIRX.md5 (in 1 panel), I can Ctrl+Shift+C (Compare Files), & it will automatically (attempt) to pick up a file named DIRX.md5 - from the other panel. And if the file names are the same, the compare proceeds, at that point.
As it is now, with differing file names, I'd need to highlight the wanted filename in the other panel, first.
So instead of an automatic FileCompare DIRX.md5 against DIRX.md5 (from two different directories), I need to hightlight the wanted file in the other panel, so that I end up with FileCompare DIRX.md5 against "DIRX - copy.md5".
If I could voidhash -o 0hash (or ..0hash, or...), specifying 0hash as the output filename(s), then when I go to compare hashes from different directories, I need on select that 1 file in my file manager.
(I'll just note that 7-zip [at lease 7z.exe] can additionally do CRC32, CRC64, BLAKE2sp [but not sfv or sidecars].)
Re: voidhash
I thought that CRC32 = SFV?
I was already writh=ing a script to convert 7za output to Everything, but stopped when someone posted an already existing method.
I did notice that 7za can also hash named datastreams (ADS). That's a big bonus (to me at least).
I was already writh=ing a script to convert 7za output to Everything, but stopped when someone posted an already existing method.
I did notice that 7za can also hash named datastreams (ADS). That's a big bonus (to me at least).
Re: voidhash
Yes it is.I thought that CRC32 = SFV?
Maybe even stdin (I didn't look)?I did notice that 7za can also hash named datastreams (ADS).
Re: voidhash
Yep, that too.
Although if you do an "echo 123|7za -si h", it will also catch the \r\n at the end. (-si = read from standard input)
(I edited your post instead of replying to it. By accident, obviously. Hopefully all is undone now)
Re: voidhash
voidhash does not recurse (by default) if specific hash alogorith(s) is supplied.Default is to recurse subfolders.
voidhash.exe c:/tmp, resurses
voidhash.exe c:/tmp -sha256, does not recurse
Re: voidhash
I am unable to reproduce the issue.
Do these .sha256 files already exist? -If so, Everything will not update them.
Does voidhash have read/write permission to these folders?
Is the path really really long?
Do these .sha256 files already exist? -If so, Everything will not update them.
Does voidhash have read/write permission to these folders?
Is the path really really long?
Re: voidhash
(I'll have to look more, but I'm thinking I must have inadvertently had a .sha256 in a subdirectory & didn't realize it, & that was why I was only seeing the current directory [where there was no existing .sha256] being hashed.)
Re: voidhash
Please check your version too.
I wonder if this was a bug in an earlier release.
I double checked the code and made sure -sha256 wasn't accidentally triggering -s
The code looks fine and -sha256 recursed subfolders for me.
I wonder if this was a bug in an earlier release.
I double checked the code and made sure -sha256 wasn't accidentally triggering -s
The code looks fine and -sha256 recursed subfolders for me.