Your rating: None Average: 5 (5 votes)

latest development RPM

Hasher is a universal application to calculate hash digests from various input formats or files. It can also be used as a general-purpose bytes encoding converter or a password generator. It's basically a frontend to Python's hashlib.


To make Hasher work on all SailfishOS versions, I had to re-package all of its Python dependencies. If you have trouble installing, try reinstalling all of them: attrsxdgspecbase91 and pwdhash.


You could use Hasher to:

  • check various hashsums of text or files
  • determine whether a downloaded file was corrupted by verifying its hashsum 
  • convert text to its binary, octal, hexadecimal, Base64 or Base91 representation
  • convert between the abovementioned formats
  • generate strong passwords from a master password, for example:
    • Use the CryptoPass password generation scheme
    • Use the PwdHash algorithm
    • Or use PBKDF2_HMAC directly
    • select the PBKDF2_HMAC algorithm
    • enter your masterpassword
    • as salt, use a string like mylogin@service.de
    • choose a high number of iterations
    • choose a desired hash length
    • use the BasE91- or Base64-encoded result as password


  • hash algorithms supported by Python's  hashlib
  • CryptoPass password generation scheme
  • PwdHash password mangling scheme
  • files as input
  • input text in several encodings (UTF8, binary, octal, decimal, hexadecimal, base64, base91)
  • input text can be examined in different encodings to make sure it is interpreted as intended
  • digest can be displayed in different encodings
  • digest can be copied to the clipboard
  • digest is shown on the cover and can be hidden

On the ToDo-List

  • using an online service like md5online.org or md5decrypt.net for looking up (”decrypting”) digests
  • remembering the UI settings
  • interrupting long-runing hashing operations (discussion on GitLab)
  • defining ”pipelines” of hash operations (e.g. concatenate these strings, then hash 100 times with sha512, then encode with Base64 and take the first 10 characters) to facilitate a hash-based password mechanism


Known Issues

  • Closing Hasher does not interrupt long-running hashing operations (like hashing huge files)

Source Code

The source code is on GitLab.com.

If you like my work, you could consider a small donation via PayPal.


Application versions: 
File harbour-hasher-0.1.0-jolla.noarch.rpm59.7 KB20/10/2019 - 23:32
File harbour-hasher-0.2.0-jolla.noarch.rpm60.58 KB21/10/2019 - 13:47
File harbour-hasher-0.3.0-jolla.noarch.rpm67.63 KB25/10/2019 - 20:03
File harbour-hasher-0.3.1-jolla.noarch.rpm68.08 KB25/10/2019 - 20:28
File harbour-hasher-0.3.2-jolla.noarch.rpm68.2 KB25/10/2019 - 20:36
File harbour-hasher-0.4.0-jolla.noarch.rpm71.46 KB26/10/2019 - 12:25
File harbour-hasher-0.5.0-jolla.noarch.rpm74.61 KB27/10/2019 - 23:40
File harbour-hasher-0.6.0-jolla.noarch.rpm86.27 KB03/11/2019 - 22:20
File harbour-hasher-0.6.1-jolla.noarch.rpm86.4 KB04/11/2019 - 11:44
File harbour-hasher-0.6.2-jolla.noarch.rpm86.38 KB05/11/2019 - 15:49
File harbour-hasher-0.7.0-jolla.noarch.rpm94.78 KB05/11/2019 - 23:45
File harbour-hasher-0.7.1-jolla.noarch.rpm95.85 KB06/11/2019 - 20:19
File harbour-hasher-0.8.0-jolla.noarch.rpm101.15 KB10/11/2019 - 12:40
File harbour-hasher-0.8.1-jolla.noarch.rpm101.24 KB10/11/2019 - 17:16
File harbour-hasher-0.8.2-jolla.noarch.rpm101.9 KB13/11/2019 - 14:35
File harbour-hasher-0.8.3-jolla.noarch.rpm102.2 KB16/11/2019 - 02:21
File harbour-hasher-0.9.0-jolla.noarch.rpm106.71 KB19/11/2019 - 20:31
File harbour-hasher-0.9.1-jolla.noarch.rpm107.05 KB16/01/2020 - 12:13

- Update Chinese translations (Rui Kon)


nobodyinperson's picture

Alright, as of version 0.8.2, Hasher should also work fine on older SailfishOS versions.

EDIT: Oops, obviously v0.8.2 just breaks starting Hasher from the app launcher altogether. v0.8.3 is on the way!

olf's picture

Hasher 0.7.0-1 starts with an all white screen under SFOS 3.0.3 on an Xperia X.
Hasher 0.5.0 (from which I just updated to v0.7.0) was working fine.

olf's picture

There is no /usr/bin/harbour-hasher!?!

nobodyinperson's picture

Yes, as it is a Python app, you launch it via sailfish-qml harbour-hasher. The output should show what's going on. If the screen is white, it is most likely a QML error. I'm on an Xperia X with 3.1 Seitseminen and can only test it there...
Have you tried reinstalling?

olf's picture

[...] launch it via sailfish-qml harbour-hasher.

Moved to Hasher issue #23.

Have you tried reinstalling?

Yes, but that did not make any difference.

nobodyinperson's picture

Ah wait, the SDK can be used to test on different versions, right? I never use the SDK as I don't like depending on GUIs.

olf's picture

Well, the other way is to compare the API documentation and employ measures as nicely implemented here or as hinted in issue #23.

BTW, something prevents the Hasher RPMs > 0.2.0 to be installed on SailfishOS 2.2.1, but I haven't had the time to take a closer look, yet.

nobodyinperson's picture

That's most likely a problem with the required Python version in the dependencies. Oulanka updated Python from 3.4 to 3.7. Can you install python3-xdgspec, python3-attrs and python3-base91 (see my other apps on OpenRepos) manually?

EDIT: I rebuilt the three abovementioned packages to not include the Requires: python(abi) = 3.7 dependency which was automatically added. That should theoretically fix installation of these packages on SailfishOS < Oulanka.

olf's picture

Thanks for your prompt reply.

Yes, after a
pkcon install python3-xdgspec python3-attrs python3-base91
pkcon update harbour-hasher
is working fine.

P.S.: Hence I can confirm issue #23 on a second device (Jolla1@SFOS2.2.1).

nobodyinperson's picture

As of Hasher v0.8 both the Python backend and the QML UI should be compatible with older SailfishOS versions.

nobodyinperson's picture

Wonderful. Thanks for the feedback. I am nearly finished making the backend Python 3.4-compatible (which it currently is not - another problem for earlier SailfishOS versions). After that, I'll tackle the Icon issue #23.

Historyscholar's picture

Chinese translation has updated!:)

nobodyinperson's picture

What do you mean by that? :-) Should I have recieved a message with the new translations? Or did I misspell something?

EDIT:  Alright, I recieved the translations, thank you!