21 lines
706 B
TypeScript
21 lines
706 B
TypeScript
/**
|
|
* Passwort-Hashing mit bcrypt (plan.md Abschnitt 11:
|
|
* "Passwoerter niemals selbst verschluesseln oder im Klartext speichern").
|
|
*/
|
|
import bcrypt from 'bcryptjs';
|
|
|
|
/** Kostenfaktor: 12 Runden sind aktueller Standard (ca. 200-300 ms). */
|
|
const BCRYPT_ROUNDS = 12;
|
|
|
|
/** Hasht ein Klartext-Passwort fuer die Speicherung in der Datenbank. */
|
|
export async function hashPassword(plainPassword: string): Promise<string> {
|
|
return bcrypt.hash(plainPassword, BCRYPT_ROUNDS);
|
|
}
|
|
|
|
/** Prueft ein Klartext-Passwort gegen den gespeicherten Hash. */
|
|
export async function verifyPassword(
|
|
plainPassword: string,
|
|
passwordHash: string,
|
|
): Promise<boolean> {
|
|
return bcrypt.compare(plainPassword, passwordHash);
|
|
} |