Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / Mobile

Mobile IMEI Validation

4.92/5 (11 votes)
21 Dec 2011CPOL 62.9K  
We all know that every Mobile Module has one unique number, i.e., IMEI(International Mobile Equipment Identity). The IMEI (14 decimal digits plus a check digit) or IMEISV (16 digits) includes information on the origin, model, and serial number of the device.

Now I am going to tell the Luhn checksum/check digit validation for the given IMEI no.

one can calculate the IMEI by choosing the check digit that would give a sum divisible by 10. For the example IMEI 49015420323751?,
IMEI	49015420323751?
Double every other	
4 18 0 2 5 8 2 0 3 4 3 14 5 2  ?
Sum digits: 4 + (1 + 8) + 0 + 2 + 5 + 8 + 2 + 0 + 3 + 4 + 3 + (1 + 4) + 5 + 2 + ? = 52 + ?
To make the sum divisible by 10, we set ? = 8, so the IMEI is 490154203237518.


The below code is written in C#, for Check Digit Calculation.

C#
private Boolean ValidateIMEI(string IMEI)
       {
           if (IMEI.Length != 15)
               return false;
           else
           {
               Int32[] PosIMEI = new Int32[15];
               for (int innlop = 0; innlop < 15; innlop++)
               {
                   PosIMEI[innlop] = Convert.ToInt32(IMEI.Substring(innlop, 1));
                   if (innlop % 2 != 0) PosIMEI[innlop] = PosIMEI[innlop] * 2;
                   while (PosIMEI[innlop] > 9) PosIMEI[innlop] = (PosIMEI[innlop] % 10) + (PosIMEI[innlop] / 10);
               }

               Int32 Totalval = 0;
               foreach (Int32 v in PosIMEI) Totalval += v;
               if (0 == Totalval % 10)
                   return true;
               else
                   return false;
           }

       }


Thanks..,

*** Alternatives are welcome.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)