Geek Blog for Little Red String

Geek stuff, amature programming, Linux, Ruby, open source

Hashing – Good For You to Know

Humans Don’t Hash

When faced with the task of comparing two electronic files to ensure that they are identical, people often compare printouts line by line. One method to compared files (while persevering the physical evidence of a printout) is to append a hash to the end of the printout[2. Using a tool like Linux’s diff might be an even better solution because in the case of a difference the user wouldn’t have to search the document to find out what the change was.]. If one were using Windows, Hash Calculator would be a nice tool as it even allows the user to cut and paste text into a pane to be hashed. Unfortunately printing out hashes might cause more questions and uncertainty one’s boss doesn’t understand what those cryptic characters are.

What is hashing?

Hashing is taking some digital inputs (text, a picture, a song) and producing a unique signature of the data. A the hash (signature) looks something like this: 34542d6380f7993a99bb7bae8bb4177f. The important points about hashing are:

It’s all around us

End Users Should Know Something About Hashing

Whenever I see people struggling to use computers most often I find that their expectations of computer usability is very low. Sometimes users feel that if they make a mistake they will have to start a day-long project all over. Users that aren’t very familiar with computers often feel that a single mouse click in a wrong spot will be devastating to all of their data.

Of course, ideally an end-user operates a device without any knowledge of the actual device, but certain understandings (i.e. the concept of saving something to the hard disk, the concept of being connected to the Internet) help users feel more confident as they operate and troubleshoot.

Hashes look ugly but a user that has some concept of hashing is able to tackle problems that other users cannot. For instance I observed a user who received a license key for a piece of software and found that upon entering their name and key the product would not register. This key was comprised of a hash that included the user name and the user had capitalized their name when entering it into the program. Writing their name in all lowercase as the company had in their emails allowed the user to register the product[3. Yes, this was a shoddy product and a shoddy company].

Users that understand hashing can feel confident when they use operations like Ubuntu’s merge all to merge files from different folders (for windows users… maybe winmerge?). The alternative is painstaking and paranoid checking of many files to ensure that no data is lost.

Users that understand hashing can feel confident when using systems like Apple’s Time Machine and understand that this is activity is easy for the computer and is an efficient use of space. They can feel that their data is secure while omiting periodic backups that they may have grown accustomed to. When redundant hard drive arrays become more common (like those possible with ZFS) users will feel confident when removing a dead hard drive from their system even when this would have been disastrous in the past.

Anyway, it’s just a random thought that turned into a long post. What else should a computer literate person (dare I say “power user”?) know to help them on their way?

Footnotes: