Prime Root Hash ist ein kryptographisches Hash-Verfahren. Damit können sichere Fingerabdrücke zum Speichern und Vergleichen von Passwörtern erzeugt werden, zum Kodieren von Zugängen und weitere Absicherungen.
Prime Root Hash ist Bestandteil der Design-Utils und im Intersult Maven Repository erhältlich.
Trapdoor-Funktionen sind mathematisch in eine Richtung einfach zu berechnen, in die andere Richtung allerdings schwierig. Prime Roots, also Primitivwurzeln basieren auf der Schwierigkeit, einen Logarithmus aus einer großen Zahl zu ziehen.
Crypt crypt = new Crypt("some-key"); String hash = crypt.hash("some-password-to-encrypt"); boolean equal = hash.equals(crypt.hash(someUserEnteredPassword));
Erklärung:
Diese Klasse verkapselt Methoden aus der Klasse com.intersult.util.math.Num, insbesondere nextProbablePrimeRoot(int bits). Damit kann nun letzten Endes das gewünschte Object vom Typ PrimeRoot erzeugt werden, das eine Primzahl und eine zugehörige Primitivwurzel enthält. Beide Zahlen sind vom Typ java.math.BigInteger.
Das Überprüfen ob eine Zahl eine Primitivwurzel einer Primzahl ist, ist selbst mit optimierten Algorithmen relativ aufwendig zu berechnen. Daher sind derzeit Primitivwurzeln bis zu 84 Bit Länge orab gespeichert.
Hinweis: Die Implementierung ist nur effizient für relativ kleine Byte-Arrays, nicht wesentlich größer als 1024 Bytes.
Warnung: Bei der Anfrage längerer Primitivwurzeln werden diese berechnet. Dies kann mit zunehmender Bit-Länge sehr viel Zeit in Anspruch nehmen.