2014-12-29 1 views
5

stiamo sviluppando un'applicazione che deve verificare se l'utente immette o meno un numero "AADHAR" valido. trovo alcuni link e alcune "apis", ma non ha soddisfatto il requisito finale prego fornire un po 'di materiale utile per risolvere questoconvalida del numero di carta Aadhar in un'applicazione

What is Aadhaar?

Aadhaar è un numero di identificazione individuale di 12 cifre rilasciato dall'Autorità unico Identificazione India a nome del governo indiano.

+2

Vuoi controllare solo il numero o convalidare quella carta Aadhar? –

+0

sì ho bisogno di controllare il numero che è stato dato dall'utente esiste o no – kittu

+1

Questa è una domanda molto vaga, vuoi semplicemente controllare il formato del numero o vuoi effettivamente convalidarlo anche con il database? Si prega di fornire maggiori dettagli. – Setu

risposta

8

Penso che stiate cercando Verhoeff algorithm, perché UIDAI utilizza questo algoritmo per convalidare il numero di aadhar. È sufficiente creare e utilizzare sotto la classe.

class VerhoeffAlgorithm{ 
     static int[][] d = new int[][] 
       { 
         {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, 
         {1, 2, 3, 4, 0, 6, 7, 8, 9, 5}, 
         {2, 3, 4, 0, 1, 7, 8, 9, 5, 6}, 
         {3, 4, 0, 1, 2, 8, 9, 5, 6, 7}, 
         {4, 0, 1, 2, 3, 9, 5, 6, 7, 8}, 
         {5, 9, 8, 7, 6, 0, 4, 3, 2, 1}, 
         {6, 5, 9, 8, 7, 1, 0, 4, 3, 2}, 
         {7, 6, 5, 9, 8, 2, 1, 0, 4, 3}, 
         {8, 7, 6, 5, 9, 3, 2, 1, 0, 4}, 
         {9, 8, 7, 6, 5, 4, 3, 2, 1, 0} 
       }; 
     static int[][] p = new int[][] 
       { 
         {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, 
         {1, 5, 7, 6, 2, 8, 3, 0, 9, 4}, 
         {5, 8, 0, 3, 7, 9, 6, 1, 4, 2}, 
         {8, 9, 1, 6, 0, 4, 3, 5, 2, 7}, 
         {9, 4, 5, 3, 1, 2, 6, 8, 7, 0}, 
         {4, 2, 8, 6, 5, 7, 3, 9, 0, 1}, 
         {2, 7, 9, 3, 8, 0, 6, 4, 1, 5}, 
         {7, 0, 4, 6, 9, 1, 3, 2, 5, 8} 
       }; 
     static int[] inv = {0, 4, 3, 2, 1, 5, 6, 7, 8, 9}; 

     public static boolean validateVerhoeff(String num){ 
      int c = 0; 
      int[] myArray = StringToReversedIntArray(num); 
      for (int i = 0; i < myArray.length; i++){ 
       c = d[c][p[(i % 8)][myArray[i]]]; 
      } 

      return (c == 0); 
     } 
     private static int[] StringToReversedIntArray(String num){ 
      int[] myArray = new int[num.length()]; 
      for(int i = 0; i < num.length(); i++){ 
       myArray[i] = Integer.parseInt(num.substring(i, i + 1)); 
      } 
      myArray = Reverse(myArray); 
      return myArray; 
     } 
     private static int[] Reverse(int[] myArray){ 
      int[] reversed = new int[myArray.length]; 
      for(int i = 0; i < myArray.length ; i++){ 
       reversed[i] = myArray[myArray.length - (i + 1)]; 
      } 
      return reversed; 
     } 
    } 

Per maggiori informazioni: -

http://en.wikibooks.org/wiki/Algorithm_Implementation/Checksums/Verhoeff_Algorithm https://groups.google.com/forum/#!topic/aadhaarauth/eB5hOU-Qtq0 http://simplybanking.wordpress.com/2013/07/14/the-actual-uidai-aadhaar-number-is-11-digits-long-and-not-12-digits/

EDIT: -

public static boolean validateAadharNumber(String aadharNumber){ 
     Pattern aadharPattern = Pattern.compile("\\d{12}"); 
     boolean isValidAadhar = aadharPattern.matcher(aadharNumber).matches(); 
     if(isValidAadhar){ 
      isValidAadhar = VerhoeffAlgorithm.validateVerhoeff(aadharNumber); 
     } 
     return isValidAadhar; 
    } 
+0

grazie del suo buon funzionamento e se imponiamo una condizione che la lunghezza deve essere uguale a 12 – kittu

+0

In effetti hai ragione, dovremo controllare la lunghezza esplicitamente, ho cancellato la mia precedente dichiarazione . appena aggiornato la mia risposta per il controllo della lunghezza !!! – RE350

+0

Fare riferimento a questo link per verhoeff in tutte le lingue https://en.wikibooks.org/wiki/Algorithm_Implementation/Checksums/Verhoeff_Algorithm –

0

Utilizzare questo javascript

// multiplication table d 
 
var d = [ 
 
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], 
 
    [1, 2, 3, 4, 0, 6, 7, 8, 9, 5], 
 
    [2, 3, 4, 0, 1, 7, 8, 9, 5, 6], 
 
    [3, 4, 0, 1, 2, 8, 9, 5, 6, 7], 
 
    [4, 0, 1, 2, 3, 9, 5, 6, 7, 8], 
 
    [5, 9, 8, 7, 6, 0, 4, 3, 2, 1], 
 
    [6, 5, 9, 8, 7, 1, 0, 4, 3, 2], 
 
    [7, 6, 5, 9, 8, 2, 1, 0, 4, 3], 
 
    [8, 7, 6, 5, 9, 3, 2, 1, 0, 4], 
 
    [9, 8, 7, 6, 5, 4, 3, 2, 1, 0] 
 
]; 
 

 
// permutation table p 
 
var p = [ 
 
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], 
 
    [1, 5, 7, 6, 2, 8, 3, 0, 9, 4], 
 
    [5, 8, 0, 3, 7, 9, 6, 1, 4, 2], 
 
    [8, 9, 1, 6, 0, 4, 3, 5, 2, 7], 
 
    [9, 4, 5, 3, 1, 2, 6, 8, 7, 0], 
 
    [4, 2, 8, 6, 5, 7, 3, 9, 0, 1], 
 
    [2, 7, 9, 3, 8, 0, 6, 4, 1, 5], 
 
    [7, 0, 4, 6, 9, 1, 3, 2, 5, 8] 
 
]; 
 

 
// inverse table inv 
 
var inv = [0, 4, 3, 2, 1, 5, 6, 7, 8, 9]; 
 

 
// converts string or number to an array and inverts it 
 
function invArray(array) { 
 

 
    if (Object.prototype.toString.call(array) === "[object Number]") { 
 
     array = String(array); 
 
    } 
 

 
    if (Object.prototype.toString.call(array) === "[object String]") { 
 
     array = array.split("").map(Number); 
 
    } 
 

 
    return array.reverse(); 
 

 
} 
 

 
// generates checksum 
 
function generate(array) { 
 

 
    var c = 0; 
 
    var invertedArray = invArray(array); 
 

 
    for (var i = 0; i < invertedArray.length; i++) { 
 
     c = d[c][p[((i + 1) % 8)][invertedArray[i]]]; 
 
    } 
 

 
    return inv[c]; 
 
} 
 

 
// validates checksum 
 
function validate(array) { 
 

 
    var c = 0; 
 
    var invertedArray = invArray(array); 
 

 
    for (var i = 0; i < invertedArray.length; i++) { 
 
     c = d[c][p[(i % 8)][invertedArray[i]]]; 
 
    } 
 

 
    return (c === 0); 
 
} 
 

 
$(document).ready(function() { 
 
    $('#UserForm').formValidation({ 
 
        message: 'This value is not valid', 
 
        feedbackIcons: { 
 
         valid: 'glyphicon glyphicon-ok', 
 
         invalid: 'glyphicon glyphicon-remove', 
 
         validating: 'glyphicon glyphicon-refresh' 
 
        }, 
 
        fields: {aadhaar_no: { 
 
          validators: { 
 
           digits: { 
 
            message: 'Please use numeric characters only.' 
 
           }, 
 
           stringLength: { 
 
            min: 12, 
 
            max: 12, 
 
            message: 'The aadhaar number must be 12 characters long' 
 
           }, identical: { 
 
            field: 'c_aadhaar_number', 
 
            message: 'The aadhaar number and its confirm field are not the same' 
 
           }, callback: { 
 
            message: 'The input string is not a valid Aadhaar number.', 
 
            callback: function (value, validator, $field) { 
 
             return validate(value); 
 
            } 
 
           } 
 
          } 
 
         } 
 
}); 
 
      });
<div class="form-group"> 
 
             <label for="aadhaar_number" class="col-lg-5 control-label">Aadhaar Number&nbsp;<span style="color: red">*</span></label> 
 
             <div class="col-lg-7 "> 
 
              <input maxlength="12" type="password" class="form-control" id="aadhaar_number" name="aadhaar_no" placeholder="Aadhaar Number" required=""> 
 
             </div> 
 
            </div>

cortesia Wikipedia

0

provare questo.

function validateAadhaar1(fieldData){       

    console.log(fieldData.id); 
    var lengthOfAadhaar = fieldData.value;       

    var checkDigits = /^\d+$/.test(lengthOfAadhaar); 

    var zero = /.!=000000000000/.test(lengthOfAadhaar); 
    var one = /.!=111111111111/.test(lengthOfAadhaar); 
    var two = /.!=222222222222/.test(lengthOfAadhaar); 
    var three = /.!=333333333333/.test(lengthOfAadhaar); 
    var four = /.!=444444444444/.test(lengthOfAadhaar); 
    var five = /.!=555555555555/.test(lengthOfAadhaar); 
    var six = /.!=666666666666/.test(lengthOfAadhaar); 
    var seven = /.!=777777777777/.test(lengthOfAadhaar); 
    var eight = /.!=888888888888/.test(lengthOfAadhaar); 
    var nine = /.!=999999999999/.test(lengthOfAadhaar); 


    if(lengthOfAadhaar.length!=12 || checkDigits == false || zero == false || one ==false || two ==false || 
     three == false || four == false || five == false || six == false || seven == false || eight == false 
     || nine == false) 
    {    

     document.getElementById(fieldData.id).style.color = "#ff0202";  

     return false; 

    } else{       

     document.getElementById(fieldData.id).style.color = "#555";  

    } 
    return true; 
}  
1

Objective C per iOS

importazione "AadhaarValidate.h"

@implementation AadhaarValidate 

int _multiplicationTable[][10] = { 
    { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }, 
    { 1, 2, 3, 4, 0, 6, 7, 8, 9, 5 }, 
    { 2, 3, 4, 0, 1, 7, 8, 9, 5, 6 }, 
    { 3, 4, 0, 1, 2, 8, 9, 5, 6, 7 }, 
    { 4, 0, 1, 2, 3, 9, 5, 6, 7, 8 }, 
    { 5, 9, 8, 7, 6, 0, 4, 3, 2, 1 }, 
    { 6, 5, 9, 8, 7, 1, 0, 4, 3, 2 }, 
    { 7, 6, 5, 9, 8, 2, 1, 0, 4, 3 }, 
    { 8, 7, 6, 5, 9, 3, 2, 1, 0, 4 }, 
    { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 } 
}; 
int _permutationTable[][10] = { 
    { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }, 
    { 1, 5, 7, 6, 2, 8, 3, 0, 9, 4 }, 
    { 5, 8, 0, 3, 7, 9, 6, 1, 4, 2 }, 
    { 8, 9, 1, 6, 0, 4, 3, 5, 2, 7 }, 
    { 9, 4, 5, 3, 1, 2, 6, 8, 7, 0 }, 
    { 4, 2, 8, 6, 5, 7, 3, 9, 0, 1 }, 
    { 2, 7, 9, 3, 8, 0, 6, 4, 1, 5 }, 
    { 7, 0, 4, 6, 9, 1, 3, 2, 5, 8 } 
}; 
int _inverseTable[] = { 0, 4, 3, 2, 1, 5, 6, 7, 8, 9 }; 
+(BOOL)isValidateAadhaar:(NSString *)aaDhaarNumber{ 
    int c = 0; 
    int len = (int)[aaDhaarNumber length]; 

    const char *numberInChar = [aaDhaarNumber UTF8String]; 

    for (int i = 0; i < len; ++i) 
     c = _multiplicationTable[c][_permutationTable[(i % 8)][numberInCharenter code here[len - i - 1] - '0']]; 
    return c == 0; 
} 
@end 
**Test** 
> NSLog(@"Check aadhar number:%d",[AadhaarValidate 
> isValidateAadhaar:@"*******"]);