Skip to main content

MRZ ve MLI Hesaplama

MRZ Hesaplaması

MRZBIRTHDATECHECKSUM, MRZEXPDATECHECKSUM, MRZDOCNUMCHECKSUM kontrollerinin detayları şu şekilde:

MRZ standardına göre Seri No, Doğum Tarihi ve Son Kullanma Tarihi alanlarının arkasına, alanların değerlerine bağlı olarak hesaplanan bir rakam(check digit) eklenir. Biz de bu rakamı hem MRZ datasından okuyoruz, hem de ilgili alan için ayrıca hesaplıyoruz.

Örneğin doğum günü 19.08.1995 olan biri için MRZ alanında 950819 bulunuyor. Bu rakamlar sırasıyla 7-3-1 ile çarpılıyor ve çarpımların toplamının modu alınarak bir rakam elde ediliyor. Aşağıda 950819 için örnek hesaplama var, bu hesaba göre 19.08.1995 doğum tarihli birinin doğum günü için check digit değeri "6". Kimlikteki MRZ alanına baktığınızda 9508196 şeklinde bu değerin doğum tarihinin sağına yazıldığını görürsünüz. Bizim control_results altında MRZBIRTHDATECHECKSUM için döndüğümüz objenin içindeki entryScore alanı bu şekilde hesaplanan check digit değerini dönüyor. entryInterpretation alanında ise bizim hesapladığımız değer ile MRZ alanında yazan değerin aynı olup olmadığını kontrol ediyoruz ve aynı değilse false dönüyoruz.Böylece isterseniz check digit kontrolünü geçmeyen MRZ içeriğini reddedebilirsiniz.

Örnek hesaplama: 950819 -> (97) + (53) + (01) + (87) + (13) + (91) = 63 + 15 + 0 + 56 + 3 +9 = 146 146%10 = 6

Seri numarası(MRZDOCNUMCHECKSUM) için de aynı algoritma geçerli, sadece, harfler için, A harfi 10'a denk gelecek şekilde, A'dan Z'ye 10'dan 35'e kadar değer verilip o şekilde hesaplama yapılıyor.

A18P78625 -> (107) +(13) + (81) + (257) + (73) + (81) + (67) + (23) + (5*1) = 70 + 3 + 8 + 175 + 21 + 8 + 42 +6 + 5 = 338 = 338%10 = 8

ABCDEFGHIJKLMNOPQRSTUVWXYZ
1011121314151617181920212223242526272829303132333435

MLI Hesaplaması

Gizli foto üstünde bulunan karakterlerin geldiği alanlar şu şekilde:

  1. karakter(harf) => soyadı alanının son harfi
  2. karakter(rakam) => adı + soyadı alanlarında bulunan toplam kelime sayısı
  3. karakter(rakam) => (adı + soyadı alanlarındaki toplam harf sayısı) mod 10
  4. karakter(rakam) => adı + soyadı alanlarındaki Türkçe karakter sayısı (İ de Türkçe karakter sayılıyor, I sayılmıyor)
  5. karakter(rakam) => TCKN son rakamı
  6. karakter(harf) => adı alanının son harfi

MLI Hesaplama