Die XdevHashConverter konvertieren einen Wert aus einer UI-Komponente je nach Converter in einen bestimmten Hash-Wert. Diese Funktionalität kann bei einer XdevFieldGroup genutzt werden um zum Beispiel ein Passwort in die Datenbank als Hash-Wert zu schreiben.
Folgende Konverter stehen zur Verfügung.
Zu finden im Package "com.xdev.security.converter":
- MD5HashConverter
- SHA1HashConverter
- SHA2HashConverter
- PBKDF2WithHmacSHA1HashConverter
Hinweis:
- Für die Verwendung der HashConverter muss die RapidClipse Framework [AA] Facet eingebunden sein
- Werden die Konverter in einer Komponente in einer XdevFieldGroup verwendet, so wird immer gleich der gehashte Wert zurückgeliefert.
- Wird ein bereits bestehender Datensatz einer XdevFieldGroup zugewiesen welcher schon einen Hash-Wert besitzt so wird dieser nicht erneut in einen neuen Hash umgewandelt. Dafür sorgt eine interne Prüfung.
- Die Prüfung ob es sich bereits um einen Hash handelt oder nicht kann nur über die Länge der HEX-Werte realisiert werden. Wird also ein Passwort beim Neuanlegen eines Datensatzes vergeben welches die exakte länge des eingestellten HashConverters besitzt wird dieser Wert nicht gehasht. Es muss also über Validatoren sichergestellt werden, das Passworter mit exakt dieser Länge nicht vergeben werden können.
- Folgende Längenbegrenzungen gelten für die einzelnen HashConverter:
- MD5HashConverter = 32 stellig
- SHA1HashConverter = 40 stellig
- SHA2HashConverter = 64 stellig
- PBKDF2WithHmacSHA1HashConverter = 32 stellig
Anwendung:
HashConverter Instantiieren
MD5HashConverter md5converter = new MD5HashConverter(); //oder SHA1HashConverter sha1HashConverter = new SHA1HashConverter(); //oder SHA2HashConverter sha2HashConverter = new SHA2HashConverter(); //oder PBKDF2WithHmacSHA1HashConverter pbkdf2WithHmacSHA1HashConverter = new PBKDF2WithHmacSHA1HashConverter();
Zuweisen des Konverters zu einem XdevTextField
SHA2HashConverter sha2HashConverter = new SHA2HashConverter(); XdevTextField xdevTextField = new XdevTextField(); xdevTextField.setConverter(sha2HashConverter);
Abrufen des konvertierten Wertes
Object convertedValue = xdevTextField.getConvertedValue();
Ist das XdevTextField teil einer FieldGroup so wird automatisch beim "Speichern" der konvertierte (Hash) Wert zurückgeliefert