Eine Hashfunktion ist einen kryptographische Funktion die in einer Richtung einfach zu berechnen ist (Telefonnummer => Hash).
Die umgekehrte Berechnung (Hash => Telefonnummer) ist aber nahezu unmöglich.
Vielleicht noch als Ergänzung:
Eine Hash-Funktion generiert aus einer Information eine andere, die sehr viel weniger Information enthält. Deshalb kann man daraus nicht einfach wieder die ursprüngliche Information herausbekommen. Mann muss praktisch die originale Information raten, die Hash-Funktion anwenden, und dann schauen, ob das gleiche Ergebnis heraus kommt.
Sehr vereinfachtes Beispiel:
Hash-Funktion: Die Quersumme der Ziffern Deiner Telefonnummer
Telefonnummer ist: 0815/4711
Hashwert (Quersumme): 0+8+1+5+4+7+1+1 = 27
An Threema wird nur die 27 übertragen.
Wenn man jetzt wissen will, welche Telefonnummer zur 27 gehört, muss man nun verschiedene Telefonnummern ausprobieren, und schauen, ob bei einer die Quersumme 27 herauskommt.
Natürlich können mehrere Telefonnummern die gleiche Quersumme haben (nennt man Kollision). Das ist bei einer kryptographischen Hash-Funktion auch so. Aber der Algorithmus stellt sicher, dass das sehr sehr sehr... unwahrscheinlich ist und die Berechnung sehr lange dauert. Trotzdem kannst Du eben aus dem Hashwert nicht mehr das Original herausbekommen, ohne auszuprobieren. Und weil die Berechnung lange dauert, kann man nicht einfach ganz schnell alle Telefonnummern, die es geben kann ausprobieren. Das würde praktisch viel zu lange dauern.
UPDATE: Was macht Threema nun mit den Hashwerten?
Threema wendet die Haschfunktion auf jede Telefonnummer im Telefonbuch an und lädt nur die Hashwerte auf den Server hoch. Der Server schaut nun nach, ob ein anderer User eine Telefonnummer mit einem Hashwert hat, der in der Hashwertliste Deines Telefonbuchs vorkommt. Falls ja, dann nimmt Threema an, dass Du seine Telefonnummer kennst. Wie gesagt, theoretisch könnte diese Annahme falsch sein, weil es auch eine Kollision sein könnte. Aber das ist so unfassbar unwahrscheinlich, dass das praktisch NIE passiert. Eine zufällige Kollision bei einer modernen kryptographischen Hash-Funktion ist so unwahrscheinlich, dass das wiederholte Gewinnen eines Sechsers im Lotto über unvorstellbar lange Zeiträume dagegen als vergleichsweise wahrscheinlich erscheint.