Pojdi na vsebino

Enotna matična številka občana

Iz Wikipedije, proste enciklopedije

Enotna matična številka občana (kratica EMŠO) je osebna identifikacijska številka v Republiki Sloveniji. EMŠO določi upravljavec centralnega registra prebivalstva (CRP) enotno za vse prebivalce Republike Slovenije, vključno s tujimi državljani. EMŠO je bil uveden leta 1976 v SFRJ in je še danes v uporabi v državah na območju bivše Jugoslavije vključno s Slovenijo. Hrvaška je ne uporablja od 1. 1. 2009 temveč zaradi pravice do zasebnosti uporablja negovoreči Osobni identifikacijski broj, ki ne vsebuje rojstnih podatkov.

EMŠO se vpisuje v osebne izkaznice, potne liste in druge javne listine.

Sestav EMŠO

[uredi | uredi kodo]

EMŠO sestavlja trinajst števk (DDMMLLLRRZZZK), ki imajo naslednji pomen:

  • od 1. do 7. števke: DDMMLLL - datum rojstva (dve mesti za dan, dve mesti za mesec in tri mesta za zadnje tri števke letnice rojstva)
  • 8. in 9. števka: RR - številka registra[1]:
  • 10., 11. in 12. števka: ZZZ - zaporedna številka oziroma kombinacija spola in zaporedne številke za osebe, rojene istega dne (000-499 za moške in 500-999 za ženske)
  • 13. števka: K - kontrolna števka, izračunana po modulu 11 (glej spodaj).

Če je EMŠO določena na napačen datum rojstva ali spol, jo upravljavec centralnega registra razveljavi in ponovno določi, razveljavljena EMŠO pa ostane v evidenci. Ob spremembah drugih osebnih podatkov oseba obdrži dodeljeno EMŠO. Razveljavljene EMŠO se ne sme dodeliti drugemu posamezniku.

Izračun kontrolne vsote

[uredi | uredi kodo]

Postopek:

  • prva številka EMŠO se pomnoži s 7
  • druga številka EMŠO se pomnoži s 6
  • tretja številka EMŠO se pomnoži s 5
  • četrta številka EMŠO se pomnoži s 4
  • peta številka EMŠO se pomnoži s 3
  • šesta številka EMŠO se pomnoži z 2
  • sedma številka EMŠO se pomnoži s 7
  • osma številka EMŠO se pomnoži s 6
  • deveta številka EMŠO se pomnoži s 5
  • deseta številka EMŠO se pomnoži s 4
  • enajsta številka EMŠO se pomnoži s 3
  • dvanajsta številka EMŠO se pomnoži z 2.

Dobljeni zmnožki iz prvega odstavka se seštejejo. Seštevek se deli z enajst (delitev se omeji na celo število). Ostanek pri deljenju se odšteje od števila 11, razlika je kontrolna številka. Kontrolna številka je enomestna, ima lahko vrednost od 0 do 9. Če je ostanek pri deljenju 0, je kontrolna številka 0.

Kadar upravljavec CRP emšo določa in je ostanek pri deljenju enak 1, je razlika dvomestna in kontrolne številke ni mogoče izračunati. V takem primeru zaporedno število preskoči, vrednost zaporedne številke poveča za 1, izračun kontrolne številke pa ponovi po istem postopku. [2]

Excelova formula za preverjanje EMŠO

[uredi | uredi kodo]

Če so v celici A1 podatki (prvih 12 števk EMŠO), lahko izračunamo kontrolno vsoto (zadnja števka) po formuli:

= IF(11-MOD((7*(MID(A1;1;1)+MID(A1;7;1)) + 6*(MID(A1;2;1)+MID(A1;8;1)) + 5*(MID(A1;3;1)+MID(A1;9;1)) + 4*(MID(A1;4;1)+MID(A1;10;1)) + 3*(MID(A1;5;1)+MID(A1;11;1)) + 2*(MID(A1;6;1)+MID(A1;12;1)));11) = 11; 0; 11-MOD((7*(MID(A1;1;1)+MID(A1;7;1)) + 6*(MID(A1;2;1)+MID(A1;8;1)) + 5*(MID(A1;3;1)+MID(A1;9;1)) + 4*(MID(A1;4;1)+MID(A1;10;1)) + 3*(MID(A1;5;1)+MID(A1;11;1)) + 2*(MID(A1;6;1)+MID(A1;12;1)));11))

Preverjanje EMŠO v programskem jeziku C#

[uredi | uredi kodo]
private bool emso_verify(string emso) {
    if ((emso == null) | (emso.Length != 13) | (!emso.All(c => char.IsDigit(c))))
        return false;
    
    int emso_sum = 0;
    for (int i = 7; i > 1; i--)
        emso_sum += i * (int.Parse(emso.Substring(7 - i, 1)) + int.Parse(emso.Substring(13 - i, 1)));
    
    int control_digit = emso_sum % 11 == 0 ? 0 : 11 - (emso_sum % 11);

    if (emso.Substring(12, 1) == control_digit.ToString())
        return true;

    return false;
}

Preverjanje EMŠO v programskem jeziku Python

[uredi | uredi kodo]
def emso_verify(emso):
        """
        Accepts an iterable of at least 12 digits and returns the number
        as a 13 digit string with a valid 13th control digit.
        Details about computation in
        http://www.uradni-list.si/1/objava.jsp?urlid=19998&stevilka=345
        """
        emso_factor_map = [7, 6, 5, 4, 3, 2, 7, 6, 5, 4, 3, 2]
        control_digit = sum([int(emso[i]) * emso_factor_map[i] for i in range(12)]) % 11
        control_digit = 0 if control_digit == 0 else 11 - control_digit
        return control_digit == int(emso[12])

Preverjanje EMŠO v programskem jeziku C++

[uredi | uredi kodo]
bool emso_verify(string emso)
{
	if (emso.empty() || emso.size() != 13) // 13 mestno
		return false;

	for (auto& c : emso)
		if (!(c >= '0' && c <= '9')) // samo številke
			return false;

	static int factor_map[] = { 7, 6, 5, 4, 3, 2, 7, 6, 5, 4, 3, 2 }; // https://www.uradni-list.si/glasilo-uradni-list-rs/vsebina?urlid=19998&stevilka=345
	short control_digit = 0, sum = 0;
	for (int i = 0; i < 12; ++i)
		sum += (int)(emso[i] - '0') * factor_map[i];

	control_digit = sum % 11 == 0 ? 0 : 11 - (sum % 11);// Seštevek se deli z enajst (delitev se omeji na celo število).
														// Ostanek pri delitvi se odšteje od števila 11, razlika je kontrolna številka.Kontrolna številka je enomestna, ima lahko vrednost od 0 do 9.
														// Če je ostanek pri delitvi O je kontrolna številka 0.
	return control_digit == (int)(emso[12] - '0');
}

Primer

[uredi | uredi kodo]

Prvi fantek, rojen v Sloveniji 1. januarja 2006, ima EMŠO 0101006500006.

Sklici

[uredi | uredi kodo]
  1. »Uradni list - Vsebina Uradnega lista«. www.uradni-list.si. Pridobljeno 8. julija 2020.
  2. »Uredba o načinu določanja osebne identifikacijske številke«. Uradni list RS, št. 8/1999. 10. februar 1999.

Zunanje povezave

[uredi | uredi kodo]