All pastes #480591 Raw Edit

andersmo

public text v1 · immutable
·published 2007-05-10 10:55 UTC
rendered paste body
def sjekksum(pnr):
    pnr = str(pnr) # Om nokon skulle sende inn eit fødselsnr som long og ikkje streng
    if len(pnr) < 9:
        raise "Må ha minst 9 siffer i personnr før sjekksumming"
    d1 = int(pnr[0])
    d2 = int(pnr[1])
    m1 = int(pnr[2])
    m2 = int(pnr[3])
    y1 = int(pnr[4])
    y2 = int(pnr[5])
    i1 = int(pnr[6])
    i2 = int(pnr[7])
    i3 = int(pnr[8])
    s1 = (11 - ((3*d1 + 7*d2 + 6*m1 + 1*m2 + 8*y1 + 9*y2 + 4*i1 + 5*i2 + 2*i3) % 11)) % 11
    s2 = (11 - ((5*d1 + 4*d2 + 3*m1 + 2*m2 + 7*y1 + 6*y2 + 5*i1 + 4*i2 + 3*i3 + 2*s1) % 11) ) % 11
    if ((s1 < 0 ) or (s1 > 9)):
        raise "WTF! s1 == %d" % s1
    if ((s2 < 0 ) or (s2 > 9)):
        raise "WTF! s2 == %d" % s2
    # Vi plukkar ut berre dei 9 fyrste sifra av det innsendte
    return (pnr[0:9] + "%.1d%.1d" % ( s1, s2) )

...

>>> print sjekksum("010180000")
01018000055