Portál AbcLinuxu, 30. dubna 2025 13:00
Aneb kterak ověřiti platonost iča
Nedávno jsem zjistil, že jediný mě známý „oficiální“ popis toho algoritmu na webu vnitra zmizel. V rámci redesignu se ztratil buď odkaz, nebo celý dokument. Po troše hledání jsem nalezl ještě lepší zdroj. Je srozumitelnější a jako bonus je tam popsaná i kontrola příčetnosti rodného čísla. Proto informací lačný čtenár udělá nejlépe když zamíří rovnou na http://latrine.dgx.cz/jak-overit-platne-ic-a-rodne-cislo
Kdyby snad latrinu měl postihnout osud mvcr.cz, tady je kód v pythonu, tak jak jsem ho před pěti minutami zbastlil:
def checkICO(ico): if len(ico) > 8: return "icoTooLong" try: digits = map(int, list(ico.rjust(8, "0"))) except ValueError: return "icoNotNumber" remainder = sum([digits[i]*(8-i) for i in range(7)]) % 11 cksum = {0:1, 10:1, 1:0}.get(remainder, 11-remainder) if digits[7] != cksum: return "icoBadChecksum"Ještě by to uneslo kontrolu na příliš krátké IČ, leč nemám tušení kolik by to tak mohlo být.
Tiskni
Sdílej:
cksum = (11-remainder) % 10
http://aplikace.mvcr.cz/archiv2008/casopisy/kriminalistika/1999/9903/rak.html
:
Jo... ale pozor na RČ kde je měsíc +20 nebo +70 (tuším cizinci s trvalým pobytem), pak koncovka musí začínat 6 nebo vyšší číslicí... U nás se RČ s A tuším nepřidělovala, zato se přidělovala s 0 .... takže dělitelno 11 nebo zbytek z dělení 11ti = 10.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.