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. Þetta númer er á 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, þ.e. fyrsti stafurinn er 4, 5 eða 6.

Kennitölur voru teknar upp á áramótum 1987–1988, en áður var notast við nafnnúmer.

Uppbygging.

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:

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 formula_3 er samleifa

þar sem samleifin (módúlus) er formula_5. 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:

Forritunardæmi.

Hérna er dæmi um klasa-fall (e. ) í 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' &amp;&amp; ssn != null &amp;&amp; ssn.length &gt; 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 &gt; 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 &amp;&amp; century != 9 &amp;&amp; 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 11 þá mun þetta ekki vera vandamál á komandi árum.