I'm not commenting on the security side of the solution, there are real experts here who can help with this (or turn it right down ;) ). However, assuming your solution (with SHA256) is acceptable and secure, your main problem seems to be that "carefully comparing all the digits of a SHA-256 hash .. takes a while". Indeed, comparing a string of 64 hex digits is not an easy task for a human, so - why not think in the direction of presenting the same information in some human-friendly form? Off the top of my head - let's have a dictionary of words (or images). Let each hex byte (00-FF) be used as an index to that dictionary. As a result we have a list of 32 words (or images) on the screen... I'm sure you've got the idea... *Yes, I do realise this has nothing to do with Cryptography.SE*