Kennitala

Kennitala  er 10 tölustafa númer sem einstaklingar, félagasamtök, stofnanir og fyrirtæki nota á Íslandi til að auðkenna sig í viðskiptum og samskiptum við stofnanir, fyrirtæki og aðra einstaklinga.

Saga 
Núverandi kennitölukerfi var tekið upp á áramótum 1987–1988, en áður var notast við nafnnúmer. Nafnnúmerakerfið byggðist á því að raða nöfnum landsmanna í stafrófsröð. Gamla kerfið hafði ýmsa galla, t.d. varð númerabreytingar þörf ef einstaklingur breytti um nafn. Auk þess var töf á að nýfædd börn fengju nafnnúmer, þar sem bíða þurfti eftir að viðkomandi fengi nafn. Á árunum eftir 1980 leiddi skortur á númerum til endurnotkunar á númerum látinna einstaklinga, sem olli stöku sinnum vandamálum í heilbrigðis- og menntakerfinu.

 Uppbygging 
Kennitalan er samanstendur af 10 tölum á forminu DDMMÁÁ-NNPÖ þar sem DD er dagurinn, MM er mánuðurinn, ÁÁ eru síðustu tveir stafirnir í fæðingarárinu, NN er handahófskennd tala, P er prófsumma sem er reiknuð út frá fyrstu átta tölunum og Ö táknar öldina.  Kennitölur fyrirtækja (og annarra lögaðila) þekkjast á því DD hlutinn er alltaf hærri en hjá einstaklingum, því tölunni 40 er alltaf bætt við hann og verður fyrsti stafurinn þar af leiðandi alltaf 4, 5, 6 eða 7.
 Fyrstu átta stafirnir 
Fyrstu 6 stafir kennitölu eru myndaðir af fæðingardagsetningu einstaklings. Ef um félagasamtök, stofnun eða fyrirtæki er að ræða er notuð stofndagsetning en fyrsta talan er hækkuð um 4.

Dæmi:
 Einstaklingur fæddur 12. janúar 1960 fær fyrri hlutann 120160
 Einstaklingur fæddur 17. júní 2007 fær fyrri hlutann 170607
 Fyrirtæki stofnað 17. júní 2007 fær fyrri hlutann 570607

Næstu tveir stafir kennitölunnar er raðtala, nær alltaf 20 eða hærri, valin við fæðingu.

 Níundi stafurinn 
Níundi stafur kennitölunnar er vartala, og virkar sem ákveðin prófsumma sem er fengin með því að beita ákveðnu reikniriti á fyrstu 8 tölurnar. Fyrstu átta tölurnar eru margfaldaðar með tölunum 3, 2, 7, 6, 5, 4, 3 og 2 frá vinstri til hægri, margfeldin eru svo lögð saman og módúlus 11 fundinn af summunni, þessi módúlus er svo notaður sem níundi stafurinn. Þannig er hægt að athuga hvort að kennitala sé löglega mynduð og hafna kennitölum sem slegnar eru inn sem ekki standast þetta vartölupróf.

Dæmi hvernig reikna ætti út níunda staf kennitölu einstaklings sem byrjar á 120160 og hefur handahófskenndu stafina 33.

Fyrst eru fyrstu átta tölurnar margfaldaðar með fyrirframákveðinni talnarunu:

og þar sem

þar sem  er samleifa


þar sem samleifin (módúlus) er . Ef samleifin er 0, þá er vartalan 0. 

Annars ef samleifin er ekki 0, er samleifin dregin frá tölunni ellefu til að fá út vartöluna.


 Tíundi stafurinn 
Tíundi og síðasti stafur kennitölunnar táknar öldina sem aðilinn er fæddur eða stofnaður:
8 er 19. öldin eða árabilið 1800-1899
9 er 20. öldin eða árabilið 1900-1999
0 er 21. öldin eða árabilið 2000-2099

 Forritunardæmi 
Hérna er dæmi um klasa-fall (e. class method) í TypeScript sem athugar hvort kennitala sé á réttu formi en amast ekki við því ef kennitölustrengurinn er tómur:    public islSSNValidate(ssn: string) : boolean {
        if (typeof ssn !== 'undefined' && ssn != null && ssn.length > 0) {
            ssn = ssn.trim().replace('-', '').replace(' ', '');
            if (ssn.length != 10)
                return false;
			var sSum =
				(3 * parseInt(ssn.substr(0, 1))) +
				(2 * parseInt(ssn.substr(1, 1))) +
				(7 * parseInt(ssn.substr(2, 1))) +
				(6 * parseInt(ssn.substr(3, 1))) +
				(5 * parseInt(ssn.substr(4, 1))) +
				(4 * parseInt(ssn.substr(5, 1))) +
				(3 * parseInt(ssn.substr(6, 1))) +
				(2 * parseInt(ssn.substr(7, 1)));
			var modRes = sSum % 11;
			if (modRes > 0)
				modRes = 11 - modRes;
			if (modRes != parseInt(ssn.substr(8, 1)))
				return false
			var century = parseInt(ssn.substr(9, 1)); 
			if (isNaN(century) || (century != 0 && century != 9 && century != 8)) 
				return false;
        }
        return true;
    }

 Gallar kennitölunnar 

 Harðkóðun aldarinnar 
Þegar á að staðfesta að kennitala sé í réttu formi þá er mikilvægt að vita að það er síðasti tölustafurinn sem gefur til kynna á hvaða öld manneskjan er fædd. Ástæða fyrir mikilvægi þess er að í kennitölunni er ártalið á stuttu formi, þ.e. ef manneskjan er fædd 2018 inniheldur kennitalan aðeins tölustafina 18. Ef síðasti tölustafurinn er 9 gefur það til kynna að manneskjan hafi fæðst á 20. öld og 0 þýðir að manneskjan hafi fæðst á 21. öld. Svo ef manneskjan er fædd árið 18 og síðasti stafurinn er 9 er manneskjan fædd 1918. Ef síðasti stafurinn er 0 er manneskjan fædd 2018.

Forritarar eru flestir sammála því að þeir eigi að skapa kóða sem rennur ekki út. Sem sagt að kóðinn sem þeir skrifa gæti virkað í dag og eftir 1000 ár. Kennitalan á þessu formi eins og við notum á Íslandi í dag gerir það að verkum að þegar kennitöluformið er staðfest þá þarf forritarinn að harðkóða aldirnar inn í forritið.

Ef það á að staðfesta að kennitalan 0101302129 sé á réttu formi þá þarf að vera skilgreint að ef tíundi stafurinn sé 9 þá skal sett 19 fyrir framan ártalið. Forritarinn gæti skilgreint eða harðkóðað nokkrar aldir fram í tímann en betra væri að kennitalan innihaldi þessar upplýsingar svo forritið gæti verið sjálfbært við að finna nákvæmt ártal án þess að forritarinn gæfi því auka upplýsingar sem síðan renna út að lokum.

Sem dæmi, ef forritari skilgreinir aðeins að:

1. Ef síðasti tölustafurinn er 9 er sett 19 fyrir framan ártalið

2. Ef síðasti tölustafurinn er 0 er sett 20 fyrir framan ártalið

þá virkar sami kóði ekki þegar hann er keyrður með kennitölu á persónu sem fæðist árið 2100 því þá verður síðasti stafurinn 1 (Sjá forritunardæmi.). En vert er að nefna að yrði síðasti stafurinn 1 þá gæti kennitalan staðið fyrir 12. öld (árin 1100-1200) eða 2. öld. (árin 100-200) nema inn komi skilgreining frá forritara sem mun hætta að virka rétt eftir ákveðinn tíma.

Til þess að forritið gæti verið algjörlega sjálfbært væri hægt að leysa þetta vandamál á þann veg að kennitölunni yrði breytt þannig að ártalið væri á lengra formi og hætt væri að nota síðasta stafinn, t.d. 01011930-212. Einnig væri hægt að bæta einum staf fyrir framan síðasta stafinn, t.d. 010130-21219. Í seinni breytingunni þyrfti ekki að breyta útreikningi vartölu.

 Aðgangur að þjóðskrá 
Til að staðfesta kennitölu er hægt að leita í þjóðskrá. Tenging við hana fer í gegnum þriðja aðila og greiða þarf fyrir aðgang . Þá þarf að gera grein fyrir því að látið fólk kemur ekki upp við leit í þjóðskrá.

 Raðnúmer 
Annar mögulegur vandi við kennitöluna er að hún gengur út frá því að ekki fleiri en 73 einstaklingar með kennitölu eigi sama fæðingardag. Það er vegna þess að fyrstu tvær tölurnar af þeim fjórum síðustu er raðnúmer, tala frá 20-89, og níunda talan sem reiknuð er út frá hinum getur ekki verið 10. Þar sem meðaltal fæðinga á dag á Íslandi er rúmlega 11https://www.hagstofa.is/utgafur/frettasafn/mannfjoldi/faedingar-2017/ þá mun þetta ekki vera vandamál á komandi árum.

 Heimildir 

 Tengt efni 
 Nafnnúmer

 Tenglar 

 Texti um kennitölur á vef Hagstofunnar. 
 Grein eftir Ian Watson um sögu persónueinkenna á Íslandi.
 Forrit á github til að sannreyna kennitölur

Flokkur:Ísland
Flokkur:Íslenskt samfélag