IMY Швеція: personnummer та GDPR
Personnummer: формат та структура
Шведський personnummer (особистий ідентифікаційний номер): YYMMDD-NNNC
- YY: рік народження (2 цифри)
- MM: місяць народження
- DD: день народження
- NNN: порядковий номер (непарний = чоловіча, парний = жіноча стать для трьох останніх цифр)
- C: контрольна цифра (алгоритм Луна)
Для осіб старше 100 років: замість «-» використовується «+» (280101+5533 означає 1928-01-01).
Samordningsnummer: 60-зміщений день
Для тимчасових мешканців, які ще не отримали personnummer:
- DD замінено на DD+60 (день народження 15 → 75)
- 700101-NNNC може бути personnummer (1970-01-01) або samordningsnummer для особи, народженої 01 певного місяця
71% загальних PII-інструментів не виявляють samordningsnummer, оскільки вони не розпізнають DD > 31 як дійсний.
Валідація алгоритму Луна для personnummer
def validate_personnummer(pnr):
# Видалити нецифрові символи
digits = ''.join(filter(str.isdigit, pnr))[-10:]
if len(digits) != 10:
return False
# Алгоритм Луна
total = 0
for i, d in enumerate(digits[:-1]):
n = int(d) * (2 if i % 2 == 0 else 1)
total += n - 9 if n > 9 else n
return (total + int(digits[-1])) % 10 == 0
Джерела: