10Module · Identité
Vérifier qu'un email/mot de passe n'est pas dans HaveIBeenPwned
Avant de réutiliser un mot de passe ou un alias email, Vether interroge HIBP via k-anonymity pour vous prévenir d'une fuite.
4 min de lecture·Mise à jour 2026-05-18
HaveIBeenPwned (HIBP) maintient la base de données publique la plus complète d'emails et de mots de passe exposés dans des fuites. Vether l'interroge de manière privée via le protocole k-anonymity.
k-anonymity en pratique
- Vether calcule SHA-1 du mot de passe (
hash). - Envoie à HIBP uniquement les 5 premiers caractères du hash.
- HIBP renvoie ~500 hashs commençant par ces 5 chars.
- Vether compare localement le hash complet contre la liste. Aucun mot de passe ni hash complet ne quitte la machine.
Implémentationtypescript
import { createHash } from "node:crypto";
async function pwnedCount(password: string): Promise<number> {
const hash = createHash("sha1")
.update(password)
.digest("hex")
.toUpperCase();
const prefix = hash.slice(0, 5);
const suffix = hash.slice(5);
const res = await fetch(`https://api.pwnedpasswords.com/range/${prefix}`);
const body = await res.text();
for (const line of body.split("\n")) {
const [s, c] = line.split(":");
if (s === suffix) return parseInt(c, 10);
}
return 0;
}Interprétation du résultat
| Count | Verdict Vether |
|---|---|
| 0 | Inconnu — sûr à utiliser |
| 1–10 | Marginal — éviter pour les comptes importants |
| 11–1000 | Mauvais — déjà ciblé par dictionnaire |
| > 1000 | Catastrophique — ne jamais utiliser |
💡
Vether refuse de générer un mot de passe dont le
pwnedCount > 0. Les mots de passe produits sont garantis absents de la base HIBP au moment de la génération.