Skip to content

cjavad/hashit

Repository files navigation

Project is hosted on pypi and launchpad

img/icon.png

Hashit, an hashing application

asciinema demo usage.

Description

Hashit, is an hashing application used as an verification tool, intendet to replace the "standard" linux hashing utilities such as md5sum, sha1sum and so on. One of the main reasons why this program was develop was to create an easy-to-use command line tool for newcomers and professionals alike to hash/verify files and other data. For more see our homepage at cjavad.github.io/hashit

What is this magic (hashing)

Hashing - The Greatest Idea In Programming

A quote from here, which i think sums up the hole thing pretty well. Even though, that stament is purely opinion based, i still thing there is some weigth in it, because you can do so many things with "hashing". First of all the concept of hashing is that you can, with an matematical algorithm generate a string that is unique to that piece of data, but you cannot turn that string into the data again, this is done by generating a string which size is constant (or at least not changing from data to data). And this is actually extreamlly useful, because this enables you to generate a string that is smaller than the original while still being totally unique, this can be using in databases for bigdata where you can create a lookup table without needing to use the hole amount of data, it can also be used to verify data such as passwords and file-checksums, which by the way is what this program is. I use the standard python hashes libary hashlib, which comes with most versions of python, some function like crc32 are from other libaries, i use these to hash some files and store the results in a checksum-file, which can be read back and check if the files have changed, this is very important when it comes to packaging, and other critical files, were one must be absoulutly sure that the file has not been changed, because if it has it could be due to corruption or infection of some kind of malware, so by making sure that the package is the same as the original. Some file systems use these hashes to make sure that the files havn't been alteret externally.

For more see docs/hashes and the wikipedia page

Background

Hashit is an hashing program which can be uses to hash and verify muliple files on a system. I got the idea from an ubuntu iso image which have this hash table, so i got the idea to make such a program using python.

I also found that the linux 'standard' hashing commands was named like this:
  • md5sum
  • sha1sum
  • sha256sum
  • cksum
  • sum

hashname + sum, which i thougth was a pretty lame naming convention.

Notice:

some hashes as blake2b and blake2s is not supported in python2.

I would recommend python3 for this program as its version of hashlib supports sha3 (Keccak)

And for compatibly reasons does detect not work for sha3 yet. so basicly to many confusions between sha2 and sha3

BSD can be useful with the -A --append because then multiple diffrent hashtypes can be stored in the same file, good for multi-sized file validation. (remember -m)

Usage

See docs/usage

Changelog

See debian/changelog

Works with python2 and python3. (python3 is recommended)

Join the chat at https://gitter.im/cjavad/hashit