Algoritmo para validar que el DNI sea real y verdadero

Publicado en 'Programación' por Rubén Blades, 22 Nov 2012.





  1. Rubén Blades

    Rubén Blades Miembro maestro

    Registro:
    27 Abr 2010
    Mensajes:
    398
    Likes:
    73
    Temas:
    49




    Hola !!!

    Estoy desarrollando una aplicación web que en un modulo de registro de clientes (persona natural) se debe validar que el DNI sea verdero y real (que no sea un número falso).

    Quisiera saber si ustedes conocen algún algoritmo que haga esa tarea.

    Saludos :hi:
     


  2. Leonardo

    Leonardo Miembro de bronce

    Registro:
    15 Mar 2011
    Mensajes:
    1,322
    Likes:
    195
    Temas:
    53
    eso se puede?
    no estaba enterado.
     
  3. Hargames

    Hargames Miembro de bronce

    Registro:
    4 Oct 2010
    Mensajes:
    1,468
    Likes:
    336
    Temas:
    37
    seguro la reniec tendra su API, quizas tendras que pagar algo para poder hacer la consultas.
     
  4. furuboku

    furuboku Miembro de plata

    Registro:
    6 May 2011
    Mensajes:
    3,372
    Likes:
    1,580
    Temas:
    41
    no ps.. con eso la tia de la esquina no me a dejar empeñar dejando mis DNIs por chelas:(
     
    A XMANOLOXMANOLOX le gustó este mensaje.
  5. mifortaleza

    mifortaleza Suspendido

    Registro:
    16 Nov 2012
    Mensajes:
    2,190
    Likes:
    907
    Temas:
    78
    ajajaja
    :biggrin:
     
  6. chillinfart

    chillinfart Miembro de oro

    Registro:
    23 Ene 2011
    Mensajes:
    8,373
    Likes:
    3,053
    Temas:
    446
    Quiere hacer un algoritmo, no una consulta de la reniec. Solo diré que parte del formato es el número de 8 dígitos correspondiente al mismo (la primera cifra puede deducirse para edades, de 0 a 4 en estos momentos). Si quieres tantear si una persona es mayor de 18 años no puede llevar un número digamos, menor a 50000000 o algo más.

    Y el API de la reniec no está disponible para cualquiera, ni para la policía, aparte que pide un huevo de requisitos para poder hacer consultas.
     
    Última edición: 22 Nov 2012
  7. Rubén Blades

    Rubén Blades Miembro maestro

    Registro:
    27 Abr 2010
    Mensajes:
    398
    Likes:
    73
    Temas:
    49
    Como el proyecto se esta realizando con software libre, el presupuesto asignado no es mucho asi que no se puede costear un API de la Reniec para realizar esa validación.

    Puedo aumentar como datos adicionales que la aplicación es móvil y se va a usar en tablets y smartphones pero una restricción es que se va a utilizarla con datos desconectados (sin conexcion a internet) porque será empleada en areas rurales (sin cobertura inálambrica).

    ¿ Entonces que es lo que puedo hacer ? ¿ Qué posible solución se le puede dar a este requerimiento ?
     
  8. flinstone

    flinstone Miembro maestro

    Registro:
    19 Ago 2010
    Mensajes:
    666
    Likes:
    48
    Temas:
    42
  9. JhaDu

    JhaDu Miembro frecuente

    Registro:
    5 Dic 2007
    Mensajes:
    217
    Likes:
    37
    Temas:
    1
    No creo q vayas a poder validar un dni (si es real o no); si o si tendria q ser con la api de la reniec, ya q solo ellos tienen los dni verdaderos. Y cobran por consulta, y no es tan dificil, los he visto en varios sitios de servicio publico (entidades del estado).

    Si lo q quieres es validar un supuesto numero dni (q pongan "43273641" en vez de poner "adivina"), eso es otra cosa; y con el articulo q puso el colega de arriba te da una idea; pero saber si el numero es real o no, solo con la ayuda de la reniec.
     
  10. Rubén Blades

    Rubén Blades Miembro maestro

    Registro:
    27 Abr 2010
    Mensajes:
    398
    Likes:
    73
    Temas:
    49
    En pocas palabras, si no tengo algún API o web service de la Reniec no puedo realizar una aplicación que valide los datos de una persona o que por ejemplo cargue sus datos directamente sin que este registrada en mi base de datos.

    Que mal, esto no incentiva para nada el desarrollo de aplicaciones inteligentes en el Perú.
    Por último...¿ No sabes cuanto cobra la reniec por dar ese servicio? ¿ O solamente es exclusivo para entidades estatales ?
     
  11. macniaco

    macniaco Miembro diamante

    Registro:
    27 Set 2011
    Mensajes:
    12,102
    Likes:
    5,335
    Temas:
    15
    No se puede hacer con un algoritmo como un keygen x la sencilla razon de q los numeros de dni estan en una base de datos, los numeros de dni se dan x año, localidad, padron, numero de inscripcion, la unica forma de ver si un dni es valido o no es consultando una base de datos y esta base de datos debe de esatr en permanente actualización, eso lo hacen en choristar o en claro xq ellos pagan x tener ese servicio, al igual q en algunas empresas donde les das tu numero de ruc y sale los datos completos de la empresa a traves de los registros de la sunat.

    Ah los bancos tambien tienen ese servicio q tambien pagan :P, si se pudiera hacer un programa q automaticamente podria dar la valides de un numero de dni hace rato ya estaria en wilson.

    Una persona simple puede comprar acceso a la base de datos de la reniec pagando un derecho x cada consulta o comprando un paquete, se supone q se hacia asi hasta donde recuerde, (hace años q no hago trabajos para la reniec).
     
  12. JhaDu

    JhaDu Miembro frecuente

    Registro:
    5 Dic 2007
    Mensajes:
    217
    Likes:
    37
    Temas:
    1
    Asi es colega, solo con la ayuda de la reniec.
    Otra alternativa seria q tu empieces a hacer tu base de datos, y le preguntas a cada persona sus nombres, dni, domicilio, edad, etc etc. Asi hasta q tengas de los 30 millones de personas aqui en Perú, y al dia sgt otra vez xq ya habran nuevas personas con dni xD.

    Como veras solo la reniec podria salvarte.

    Sobre el precio no sabria decirte, lo verifique hace años, pero cibran por consultas, por ejm 10000 consultas - $1000/mensuales (es solo un ejemplo).
    Pero puedes revisar su pagina web, de ahi yo saque el dato hace años.

    Y no es q no colaboren con el desarrollo de aplicaciones inteligentes en el peru.
    Te haz puesto a pensar que pasaria si cualquier hijo del vecino pueda saber todos los datos de cualquier persona con solo poner su dni en un programa? Seria muy peligroso.
     
  13. e.acostaz

    e.acostaz Miembro nuevo

    Registro:
    21 Jul 2012
    Mensajes:
    22
    Likes:
    1
    Temas:
    0
    reniec te cobra 4 soles por consulta.
     
  14. Rubén Blades

    Rubén Blades Miembro maestro

    Registro:
    27 Abr 2010
    Mensajes:
    398
    Likes:
    73
    Temas:
    49
    Entiendo, lo que dicen. Es cierto que la seguridad ciudadana esta en primer lugar y hoy en dia cualquiera podria usar esa aplicacion y aprovecharse de ello para cometer delitos.

    En fin , entonces por cuestiones de seguridad no es posible realizar una aplicación móvil de ese tipo sin pagar antes una fuerte suma y sin hacer un papeleo engorroso de por medio. Supongo que la misma sociedad peruana ha creado un ambiente hostil y poco dócil para desarrollar aplicaciones inteligentes y que puedan trabajar con datos reales. Es una pena, supongo que esa funcionalidad no se podrá adaptar a mi app.
     
    Última edición: 23 Nov 2012
  15. Leonardo

    Leonardo Miembro de bronce

    Registro:
    15 Mar 2011
    Mensajes:
    1,322
    Likes:
    195
    Temas:
    53
    no se puede pes es una pena,
     
  16. AidenCros

    AidenCros Miembro frecuente

    Registro:
    20 Nov 2012
    Mensajes:
    238
    Likes:
    20
    Temas:
    69
    si dejara detalles como:

    -si deseas un programa funcional
    - o solamente un algoritmo (esto seria muy basico , podria haber margen de error muy grande)
    -en que programa lo deseas
    o te refieres a pseudocodigo y diagramas ? simplemente para un trabajo?

    podría fabricarlo por una pequeña colaboración.

    p.d: no preguntar como.
     
    Última edición: 28 Nov 2012
  17. CompuXtreme

    CompuXtreme Miembro maestro

    Registro:
    15 Ago 2011
    Mensajes:
    827
    Likes:
    212
    Temas:
    147
    Claro que se puede hacer con la misma pagina web de la Reniec, sin tener que pagar nada.

    Con tan solo un programita que envie pulsaciones de teclado y/o mouse a la web donde se consulta si un DNI existe o no.

    La chamba mas fuerte es el algoritmo que reconosca los numeros de la imagen.

    El asunto es... estas dispuesto a pagar bien por la chamba?
     
  18. JhaDu

    JhaDu Miembro frecuente

    Registro:
    5 Dic 2007
    Mensajes:
    217
    Likes:
    37
    Temas:
    1
    Lee bien; él no solo quiere saber si existe o no; quiere que en el caso de existir, le salga todos los datos que figuran en el dni, nombres, direccion, fecha de nacimiento, etc etc.

    Leer letras de verificacion para evitar bots es simple (las letritas distorcionadas), estamos casi en el 2013, quiza hace años era novedad, hoy en dia hay un monton de formas, buscar en google.
     
  19. Shadowtheone

    Shadowtheone Miembro nuevo

    Registro:
    2 Oct 2012
    Mensajes:
    41
    Likes:
    15
    Temas:
    1
    Si existe o no es facil... si queires los demas datos tendrias q tener la bd de la reniec.... o tratar de vincular tu programa o aplicacion con la pagina web... aunk igual te cobraria la consulta... o hackearte la pagina para q no t cobre jejejeje.... y para q buscas todos los datos de una persona? :S

    Tienes razon lo del capcha es facil d averiguar :)
     
  20. majocaya

    majocaya Miembro frecuente

    Registro:
    19 Set 2007
    Mensajes:
    73
    Likes:
    6
    Temas:
    28
    Lo que quieres no es dificil... pero si tu app es offline vas a tener esos 30MM de registros.. es una perdida de espacio en disco

    Tu aplicacion tendria que ser online (con internet)... y aprovechar que algunas webs del estado no estan bien hechas, los captchas que usan son recontra debiles...

    Hace algun tiempo hice algo similar... trate de descargar los 30MM pero me aburri, me ocupo mucho espacio y eso que solo descargue 4MM al final parece que me detectaron y bloquearon mi IP.. y bueno lo deje de lado

    ahora probando lo que hice aun funciona... es un wsdl y si qieres te lo puedo pasar... me avisas :o) pero eso si tu app tendria que ser online :-)