Die XdevHashConverter Die PasswordHasher konvertieren einen Wert aus einer UI-Komponente je nach Converter in einen bestimmten Hash-Wert. Diese Funktionalität kann bei einer XdevFieldGroup einen PasswordField genutzt werden um zum Beispiel ein Passwort in die Datenbank als Hash-Wert zu schreiben.
Folgende Konverter stehen zur Verfügung.
Zu finden im Packagein dem Interface "com.rapidclipse.xdevframework.security.converterutil.PasswordHasher":
- MD5HashConverterMD5
- SHA1HashConverterSHA1
- SHA2HashConverterSHA2
- PBKDF2WithHmacSHA1HashConverterPBKDF2WithHmacSHA1
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 Wertes 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
Anwendung:
PasswordField-Wert mit SHA2 hashen:
Code Block | |||
---|---|---|---|
|
...
| |
byte[] passwordBytes = |
...
passwordField.getValue().getBytes(); |
...
Zuweisen des Konverters zu einem XdevTextField
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
SHA2HashConverter sha2HashConverter = new SHA2HashConverter();
XdevTextField xdevTextField = new XdevTextField();
xdevTextField.setConverter(sha2HashConverter); |
Abrufen des konvertierten Wertes
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
Object convertedValue = xdevTextField.getConvertedValue(); |
...
byte[] hashedPasswordBytes = PasswordHasher.Sha2().hashPassword(passwordBytes); |