ID: I202512271118
Status: idea
Tags: Overheid
Burgerservicenummer
Je BSN is een uniek nummer dat een elk persoon in nederland gegevon wordt.

Het nummer voldoet aan de volgende eisen:
- het moet uniek zijn;
- het BSN bestaat uit 9 cijfers; 8-cijferige nummers worden voorzien van een voorloopnul;
- het BSN voldoet aan de 11-Proef;
- het moet informatieloos zijn;
- er mag geen volgordelijkheid uit blijken;
- het moet binnen een vooraf ingesteld interval liggen.
In principe wordt een BSN nadat het is toegekend niet meer gewijzigd. Dit kan echter wel, in het geval dat bijvoorbeeld aan twee verschillende mensen hetzelfde BSN is toegekend (zie Logisch Ontwerp BSN 1-3, pagina 18), of in het geval van (ernstige) identiteitsdiefstal. De procedure daarvoor heet ‘Wijzigen burgerservicenummer’ en staat onder meer beschreven in de handleiding uitvoeringsprocedures (HUP).
11-Proef
Het burgerservicenummer bestaat uit 9 cijfers en voldoet aan een variant op de elfproef. De variant is in het laatste cijfer, dat in plaats van met 1, met -1 wordt vermenigvuldigd. Dit verschil is er opzettelijk ingebracht zodat een abusievelijk ingevoerd bankrekeningnummer als foutief wordt aangemerkt (dit gaat natuurlijk niet op als het nummer eindigt op een 0, in welk geval een nummer zowel een geldig bankrekeningnummer als BSN kan zijn. Voor het burgerservicenummer geldt in ieder geval dat het wel degelijk op een 0 mag eindigen).
Als je de 11-Proef wilt toepassen op het IBAN werkt het net iets anders.
De Validatieregel
Als het burgerservicenummer wordt voorgesteld door ABCDEFGHI, dan moet je het volgende doen:
Vermenigvuldig elk cijfer met een specifiek gewicht:
| Positie | Cijfer | Gewicht | Berekening |
|---|---|---|---|
| 1e | A | 9 | 9 × A |
| 2e | B | 8 | 8 × B |
| 3e | C | 7 | 7 × C |
| 4e | D | 6 | 6 × D |
| 5e | E | 5 | 5 × E |
| 6e | F | 4 | 4 × F |
| 7e | G | 3 | 3 × G |
| 8e | H | 2 | 2 × H |
| 9e (laatste) | I | -1 | -1 × I ← De uitzondering! |
Tel al deze waarden op:
Dit totaal moet een veelvoud van 11 zijn (deelbaar door 11 met rest 0).
Geldige Voorbeelden
Voorbeeld 1: 111222333
66 ÷ 11 = 6 ✓ Geldig!
Voorbeeld 2: 123456782
154 ÷ 11 = 14 ✓ Geldig!
Er kunnen met deze combinatie ongeveer 80 tot 85 miljoen nummers gecreëerd worden.
Code
Om deze 11 proef te testen kan je dat doen met de volgende code:
function isValidBSN(bsn: string): boolean {
// Check if input is a string of exactly 9 digits
if (!/^\d{9}$/.test(bsn)) {
return false;
}
// Convert string to array of digits
const digits = bsn.split("").map(Number);
// Define weights for each position
const weights = [9, 8, 7, 6, 5, 4, 3, 2, -1];
// Calculate the weighted sum
const sum = digits.reduce(
(total, digit, index) => total + digit * weights[index],
0
);
// Check if sum is divisible by 11
return sum % 11 === 0;
}
// Test cases
console.log(isValidBSN("111222333")); // true
console.log(isValidBSN("123456782")); // true
console.log(isValidBSN("123456789")); // false
console.log(isValidBSN("12345678")); // false (too short)
console.log(isValidBSN("abcdefghi")); // false (not digits)