Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

algoritam za proveru JMBG ili Java source?

[es] :: Java :: algoritam za proveru JMBG ili Java source?

[ Pregleda: 6409 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

DusanSukovic
Dušan Šulović
Na krevetu

Član broj: 35637
Poruke: 1371

Sajt: www.MotoBoem.RS


+460 Profil

icon algoritam za proveru JMBG ili Java source?07.04.2015. u 23:45 - pre 72 meseci
Ima li neko algoritam za proveru JMBG broja, ili jos bolje Java source code za proveru JMBG?

hvala!
Stane Dolanc: "Bavljenje tehnikom treba da postane svakodnevna potreba coveka.."
 
Odgovor na temu

Texas Instruments

Član broj: 227540
Poruke: 263
82.117.201.*



+61 Profil

icon Re: algoritam za proveru JMBG ili Java source?08.04.2015. u 10:34 - pre 72 meseci
http://www.elitesecurity.org/t376222-Provjera-JMBG
 
Odgovor na temu

DusanSukovic
Dušan Šulović
Na krevetu

Član broj: 35637
Poruke: 1371

Sajt: www.MotoBoem.RS


+460 Profil

icon Re: algoritam za proveru JMBG ili Java source?08.04.2015. u 12:45 - pre 72 meseci
Bravo TI, koristio sam pretragu, ali na ovo zaboravih , ovaj code u .NET obecava ,samo da ga pokusam preraditi u Java:

Code:

Code:

        private bool provjeriJMBG( string jmbgUnos)
        {
            if ( jmbgUnos.Length == 13) // provjera duzine unosa ...
            {
                int[] danaUmjesecu = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
                char[] niz = jmbgUnos.ToCharArray(0, 13); // pretvori u niz karaktera

                // prvo provjera unosa godine rodjenja
                char[] godinaRodjenja = jmbgUnos.ToCharArray(4, 3); // izvuci cifre koje se odnose na godinu rodjenja
                int pomGodina = 100 * (Convert.ToInt32(godinaRodjenja[0] - '0')) +
                                 10 * (Convert.ToInt32(godinaRodjenja[1] - '0')) +
                                       Convert.ToInt32(godinaRodjenja[2] - '0'); // napravi godinu rodjenja

                if (godinaRodjenja[0] == '0') // neko ko je rodjen u XXI vijeku ...
                    pomGodina += 2000;
                else
                    pomGodina += 1000; // ko je rodjen u XX vijeku

                if (pomGodina < 1900) // trenutno, godina ne moze biti manja od 1900-e !
                {
                    MessageBox.Show("Unesena godina rodjenja manja od 1900-e godine !!!");
                    return false;
                }
                else
                {
                    if (pomGodina > DateTime.Now.Year) // niti veca od tekuce godine !
                    {
                        MessageBox.Show("Unesena godina rodjenja veca od tekuce godine !!!");
                        return false;
                    }
                }

                // provjera unosa mjeseca rodjenja
                char[] mjesecRodjenja = jmbgUnos.ToCharArray(2, 2); // izvuci cifre koje se odnose na mjesec rodjenja
                int pomMjesec = 10 * (Convert.ToInt32(mjesecRodjenja[0] - '0')) +
                                      Convert.ToInt32(mjesecRodjenja[1] - '0');
                if (pomMjesec > 12 || pomMjesec < 1) // mjesec mora biti <= 12 i > 0 
                {
                    MessageBox.Show("Pogresno unesen mjesec rodjenja (treca i cetvrta cifra) !!!");
                    return false;
                }

                // provjera da li godina prestupna (zbog broja dana u mjesecu)
                if (((pomGodina % 4) == 0) && (((pomGodina % 100) != 0) || ((pomGodina % 400) == 0))) // prestupna godina
                {
                    danaUmjesecu[1] = 29; // koriguj broj dana za februar
                }

                // provjera unosa dana po mjesecu ...
                char[] danRodjenja = jmbgUnos.ToCharArray(0, 2);
                int pomDan = 10 * (Convert.ToInt32(danRodjenja[0] - '0')) +
                                   Convert.ToInt32(danRodjenja[1] - '0');

                if (pomDan > danaUmjesecu[pomMjesec - 1] || pomDan < 1)
                {
                    MessageBox.Show("Pogresno unesen dan rodjenja (prva i druga cifra) !!!");
                    return false;
                }

                int zbir = 0;

                // formula za racunanje kontrolnog zbira ...
                for (int i = 0; i < 6; i++)
                    zbir += (7 - i) * (Convert.ToInt32(niz[i] - '0') + Convert.ToInt32(niz[6 + i] - '0'));
                int ostatak = zbir % 11; // ostatak dijeljenja zbira sa 11
                int razlika = 11 - ostatak; // razlika

                // kontrola 
                if (ostatak == 1)// ako je ostatak 1, JMBG je POGRESAN !
                {
                    MessageBox.Show("Unijeti maticni broj NIJE ispravan ! (Ostatak=1)");
                    return false;
                }
                else if (ostatak == 0) // ako je Ostatak=0, i kontrolna cifra=0, JMBG je ispravan
                {
                    if (Convert.ToInt32(niz[12] - '0').Equals(0))
                    {
                        MessageBox.Show("Unijeti maticni broj je ISPRAVAN !(ostatak=0,kontrolna cifra=0)");
                        return true;
                    }
                    else
                    {
                        MessageBox.Show("Unijeti maticni broj NIJE ispravan !(ostatak=0,kontrolna cifra!=0)");
                        return false;
                    }
                }
                else if (razlika == (niz[12] - '0'))
                {
                    MessageBox.Show("Unijeti maticni broj je ISPRAVAN !(razlika=kontrolna cifra)");
                    return true;
                }
                else
                {
                    MessageBox.Show("Unijeti maticni broj NIJE ispravan !(razlika!=kontrolna cifra)");
                    return false;
                }
            }
            else
            {
                MessageBox.Show("JMBG mora biti dugacak 13 karaktera!!! \r\n Unesite JMBG ponovo");
                return false;
            }
        }


Stane Dolanc: "Bavljenje tehnikom treba da postane svakodnevna potreba coveka.."
 
Odgovor na temu

DusanSukovic
Dušan Šulović
Na krevetu

Član broj: 35637
Poruke: 1371

Sajt: www.MotoBoem.RS


+460 Profil

icon Re: algoritam za proveru JMBG ili Java source?08.04.2015. u 13:06 - pre 72 meseci
Koji je ekvivalent ovih recenica u Javi?

Code:

char[] niz = jmbgUnos.ToCharArray(0, 13);


Code:

int pomGodina = 100 * (Convert.ToInt32(godinaRodjenja[0] - '0'))



Code:

char[] mjesecRodjenja = jmbgUnos.ToCharArray(2, 2);


Code:

if (Convert.ToInt32(niz[12] - '0').Equals(0))

Stane Dolanc: "Bavljenje tehnikom treba da postane svakodnevna potreba coveka.."
 
Odgovor na temu

abyss

Član broj: 2945
Poruke: 681
*.static.isp.telekom.rs.



+51 Profil

icon Re: algoritam za proveru JMBG ili Java source?08.04.2015. u 13:21 - pre 72 meseci
Code:
    public static boolean isJMBGOk(String jmbg) {
        String s = "";
        String input = jmbg.substring(0, jmbg.length() - 1);
        int i = 0, i1 = 0, diff = 0;
        i = i + (Integer.valueOf(String.valueOf(jmbg.charAt(0))).intValue() * 7);
        i = i + (Integer.valueOf(String.valueOf(jmbg.charAt(1))).intValue() * 6);
        i = i + (Integer.valueOf(String.valueOf(jmbg.charAt(2))).intValue() * 5);
        i = i + (Integer.valueOf(String.valueOf(jmbg.charAt(3))).intValue() * 4);
        i = i + (Integer.valueOf(String.valueOf(jmbg.charAt(4))).intValue() * 3);
        i = i + (Integer.valueOf(String.valueOf(jmbg.charAt(5))).intValue() * 2);
        i = i + (Integer.valueOf(String.valueOf(jmbg.charAt(6))).intValue() * 7);
        i = i + (Integer.valueOf(String.valueOf(jmbg.charAt(7))).intValue() * 6);
        i = i + (Integer.valueOf(String.valueOf(jmbg.charAt(8))).intValue() * 5);
        i = i + (Integer.valueOf(String.valueOf(jmbg.charAt(9))).intValue() * 4);
        i = i + (Integer.valueOf(String.valueOf(jmbg.charAt(10))).intValue() * 3);
        i = i + (Integer.valueOf(String.valueOf(jmbg.charAt(11))).intValue() * 2);
        i1 = i;
        i = i / 11;
        diff = i1 - (i * 11);
        if ((diff == 0) || (diff == 1)) {
            s = input + 0;
        } else {
            s = input + (11 - diff);
        }
        return s.equals(jmbg);
    }


Ovako sam ga ja svojevremeno radio.
--
"Once hadst thou passions and calledst them evil. But now hast thou only
thy virtues: they grew out of thy passions."
 
Odgovor na temu

DusanSukovic
Dušan Šulović
Na krevetu

Član broj: 35637
Poruke: 1371

Sajt: www.MotoBoem.RS


+460 Profil

icon Re: algoritam za proveru JMBG ili Java source?08.04.2015. u 13:36 - pre 72 meseci
Kompajlira lepo samo "0000000000000"je validan broj...
Stane Dolanc: "Bavljenje tehnikom treba da postane svakodnevna potreba coveka.."
 
Odgovor na temu

abyss

Član broj: 2945
Poruke: 681
*.static.isp.telekom.rs.



+51 Profil

icon Re: algoritam za proveru JMBG ili Java source?08.04.2015. u 13:46 - pre 72 meseci
Ovaj kod ne proverava maticne knjige :) nego samo sracuna kontrolni broj i proveri sa unetim. Kod 12 nula je kontrolni bro isto nula.
Te slucajeve moraz na pocetku da izbacis. Isto tako i za null, kraci/duzi itd.
--
"Once hadst thou passions and calledst them evil. But now hast thou only
thy virtues: they grew out of thy passions."
 
Odgovor na temu

DusanSukovic
Dušan Šulović
Na krevetu

Član broj: 35637
Poruke: 1371

Sajt: www.MotoBoem.RS


+460 Profil

icon Re: algoritam za proveru JMBG ili Java source?08.04.2015. u 14:36 - pre 72 meseci
Hvala :)


Stane Dolanc: "Bavljenje tehnikom treba da postane svakodnevna potreba coveka.."
 
Odgovor na temu

[es] :: Java :: algoritam za proveru JMBG ili Java source?

[ Pregleda: 6409 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.