Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
de:modul:ffit:3-jahr:java:learningunits:lu04:b [2025/09/09 01:02] apeterde:modul:ffit:3-jahr:java:learningunits:lu04:b [2025/09/22 14:09] (aktuell) apeter
Zeile 14: Zeile 14:
   * passwordSalt   * passwordSalt
  
-Als nächstes benötigen wir eine Möglichkeit Benutzer anzulegen und abzuspeichern. Erstellen Sie dafür in ihrer Applikation den Befehl ''createUser ...'' gefolgt von den Werten.+Als nächstes benötigen wir eine Möglichkeit Benutzer anzulegen und abzuspeichern. Erstellen Sie dafür in ihrer Applikation den Befehl ''createUser ...'' gefolgt von den Werten (ausser id, Salt und Hash). Der Commit ''bd45e4c'' enthält die nötigen Anpassungen an ''persistence.xml'' und die Tests.
  
 Anstatt dem Salt und dem Passwort-Hash wird das Passwort im Klartext angegeben. Der Salt kann beim Erstellen eines neuen Benutzers folgendermassen zufällig generiert werden. Mit dem Salt und dem übergebenen Klartextpasswort wird der Hash berechnet, welcher im Gegensatz zum Klartextpasswort, in der Datenbank gespeichert wird. Anstatt dem Salt und dem Passwort-Hash wird das Passwort im Klartext angegeben. Der Salt kann beim Erstellen eines neuen Benutzers folgendermassen zufällig generiert werden. Mit dem Salt und dem übergebenen Klartextpasswort wird der Hash berechnet, welcher im Gegensatz zum Klartextpasswort, in der Datenbank gespeichert wird.
Zeile 25: Zeile 25:
     }     }
  
-    public static String hashPassword(String password, byte[] salt) throws NoSuchAlgorithmException {+    public static byte[] hashPassword(String password, byte[] salt) throws NoSuchAlgorithmException {
         MessageDigest md = MessageDigest.getInstance("SHA-256");         MessageDigest md = MessageDigest.getInstance("SHA-256");
         md.update(salt);         md.update(salt);
-        byte[] hashed = md.digest(password.getBytes()); +        return md.digest(password.getBytes());
-        return Base64.getEncoder().encodeToString(hashed);+
     }     }
 </code> </code>
  
-// Nur Administrator-Benutzer sollen berechtigt sein, Bücher einzulesen+Um den Hash und den Salt abzuspeichern, können diese mit Base64 kodiert werden. 
 + 
 +<code java> 
 +byte[] salt = PasswordHandler.generateSalt(); 
 +byte[] hash = PasswordHandler.hashPassword(password, salt); 
 + 
 +String saltBase64 = Base64.getEncoder().encodeToString(salt); 
 +String hashBase64 = Base64.getEncoder().encodeToString(hash); 
 + 
 +user.setPasswordSalt(saltBase64); 
 +user.setPasswordHash(hashBase64); 
 +</code> 
 + 
 +Überprüfen Sie, ob folgende Eingabe einen Benutzer anlegen und in die Datenbank speichern kann. 
 +<code> 
 +createUser Max Mustermann 1990-05-21 max.mustermann@example.com geheim123 
 +</code> 
 + 
 +Überprüfen Sie Ihren Code ebenfalls mit dem JUnit-Test.
  • de/modul/ffit/3-jahr/java/learningunits/lu04/b.1757372539.txt.gz
  • Zuletzt geändert: 2025/09/09 01:02
  • von apeter