none
Calcular el CURP

Answers

  • El CURP se forma de la forma siguiente.

    Nombre: Fernando Arturo mez Flores => GOFF
    Nacimiento: 31/01/1983 => 830131
    Tipo: Hombre => H
    Estado Natal: DF => DF
    Nombre: FeRnando Arturo GóMez FLores => MLR
    Homoclave: generada por la SEGOB

    De donde mi CURP sería GOFF830131HDFMLR + Homoclave

    Es decir, tomas las primeras dos letras del apellido paterno, la primera del apellido materno y la primera del primer nombre. Tomas el año, mes y día de nacimiento. H para hombre, M para mujer. Tomas el código ISO del estado donde naciste (DF en mi caso: solo son dos dígitos). Luego, tomas la primera consonante del apellido paterno, materno y nombre, que no sean las que ya elegiste al principio. Y finalmente, está la homoclave, que esa te la genera la SEGOB, y de la cuál no conozco el algoritmo. Espero, empero, que lo demás te sirva.

    Obvio solo tendrías que concatenar las cadenas que obtendrías de los textboxes de entrada. Supongo que no hay dificultad con eso.

    Saludos.
    Friday, May 09, 2008 3:54 PM
  • Saludos:

       En mi blog he posteado una solución que te permitirá no Calcular la CURP, pero si obtenerlo desde la fuente oficial (RENAPO).

       Aqui la url http://johnajfk.spaces.live.com/blog/?_c=BlogPart&_c02_vws=1

       Espero te sirva

    Wednesday, July 14, 2010 9:26 PM

All replies

  • El CURP se forma de la forma siguiente.

    Nombre: Fernando Arturo mez Flores => GOFF
    Nacimiento: 31/01/1983 => 830131
    Tipo: Hombre => H
    Estado Natal: DF => DF
    Nombre: FeRnando Arturo GóMez FLores => MLR
    Homoclave: generada por la SEGOB

    De donde mi CURP sería GOFF830131HDFMLR + Homoclave

    Es decir, tomas las primeras dos letras del apellido paterno, la primera del apellido materno y la primera del primer nombre. Tomas el año, mes y día de nacimiento. H para hombre, M para mujer. Tomas el código ISO del estado donde naciste (DF en mi caso: solo son dos dígitos). Luego, tomas la primera consonante del apellido paterno, materno y nombre, que no sean las que ya elegiste al principio. Y finalmente, está la homoclave, que esa te la genera la SEGOB, y de la cuál no conozco el algoritmo. Espero, empero, que lo demás te sirva.

    Obvio solo tendrías que concatenar las cadenas que obtendrías de los textboxes de entrada. Supongo que no hay dificultad con eso.

    Saludos.
    Friday, May 09, 2008 3:54 PM
  • Hola fernando no se si me podrias ayudar para resolver el programa para sacar la curp y el rfc 
    esque ya tengo en diseño pero no se como calcularlo 
    me prodrias ayudar te dejo mi correo 
    montoro_eduardo@hotmail.com 
    espero y me puedas ayudar te lo agradeseria

    Thursday, June 04, 2009 4:33 AM
  • Saludos:

       En mi blog he posteado una solución que te permitirá no Calcular la CURP, pero si obtenerlo desde la fuente oficial (RENAPO).

       Aqui la url http://johnajfk.spaces.live.com/blog/?_c=BlogPart&_c02_vws=1

       Espero te sirva

    Wednesday, July 14, 2010 9:26 PM
  • bueno ps esta formula para calcularlo esta mal

    debes de agarrar la primer consonante y la primer vocal de apellido paterno, la primer letra del apellido materno y la primer letra del primer nombre.

    por ejemplo:

    flores rodriguez joel

    la primer parte seria

    Fl0res Rodriguez joel

    y quedria:

    FORJ

    en lugar de: FLRJ

    y lo demas ps ya esta bien explicado


    DavidDDR david_fer1@hotmail.com
    Thursday, July 15, 2010 1:57 AM
  • Hola. Pues ni Fernando ni David, aunque agradecemos el esfuerzo.

    Sólo quisiera aclarar en qué han errado:

    Para formar la primera parte de la CURP, no se toman ni las dos primeras letras, ni la primer consonante y la primer vocal del apellido paterno; sino se toma la PRIMERA LETRA y la PRIMER VOCAL después de esta. Suena igual y en algunos casos pudiera quedar lo mismo, pero tenemos que saber cómo se contruye para no confundirnos; ya que la constitución de los apellidos pueden ser muy diferentees unos de otros, y según el apellido es como va a quedar conformada la CURP.

    Notemos pues la construcción correcta, y para ello tomemos los mismos ejemplos que ellos nos hicieron favor de poner:

    Gómez: la primer letra, G, y la primer vocal después de la primer letra, O, y entonces queda GO.

    Flores: la primer letra, F, y la primer vocal después de esta, O, y entonces queda FO.

    Pero miren qué ocurre en los casos en que el apellido empieza con vocal como mi apellido: Ortega.

    Si tomáramos las dos primeras letras sería OR, pero no es así.

    Si tomáramos la primer consonante seguida de la primer vocal sería RO, y tampoco es así.

    Sino que tomamos la primera letra, O, y la primer vocal después de esta, E, y queda OE.

    OE es como inicia la CURP con este apellido.

    Bueno espero haber podido contribuir. Fue un placer

    • Proposed as answer by Armandojr83 Wednesday, October 13, 2010 5:47 PM
    Wednesday, October 13, 2010 5:39 PM
  • Hola buen dia, checando el foro me encontre con este tema que yo tambien batalle para encontrar como calcular el RFC aunque aqui ustedes quieren calcular la curp aun asi es algo parecido, bueno aqui les dejo mi funcion para calcular el rfc en C#, espero que les sea de utilidad y les de una idea de como adaptarlo para la curp cualquier duda o comentario estoy a sus ordenes:

    private

    string RfcMake(string nom, DateTime Fnac)

    {

     

    string vocal = "", Cad = "", ApePat = "", ApeMat = "", rfc = "";

     

    try

    {

    //saca todas las palabras que contenga el nombre

     

    string[] Cads = nom.ToUpper().Split(new char[] { ' ' });

     

    List<string> Lst = new List<string>();

    //eliminamos cadenas vacias por si trae espacios demas

     

    foreach (string cd in Cads)

    {

     

    if (cd.Trim() != "")

    Lst.Add(cd);

    }

    Cads = Lst.ToArray();

     

    int lng = Cads.Length;

    //sacamos cada uno de los apellidos y el primer nombre

     

    if (lng >= 3)

    {

    nom =

    "";

    ApePat = Cads.GetValue(lng - 2) +

    "";

    ApeMat = Cads.GetValue(lng - 1) +

    "";

    nom = Cads.GetValue(0) +

    "";

    //obtengo una cadena sin la primer letra para buscar la primer vocal en el apellido paterno

    Cad = ApePat.Remove(0, 1);

    }

    //buscamos la primer vocal, donde la encuentra detiene el ciclo

     

    foreach (char chr in Cad.ToCharArray())

    {

     

    if (chr == 'A' || chr == 'E' || chr == 'I' || chr == 'O' || chr == 'U')

    {

    vocal = chr.ToString();

     

    break;

    }

    }

     

    //la primer letra y la primer vocal del apellido paterno

     

    //la primer letra del apellido materno

     

    //la primer letra del nombre

     

    //y la fecha de nacimiento Ao mes dia

    rfc =

    string.Format("{0}{1}{2}{3:yyMMdd}",

    ApePat.Length > 0 ? ApePat.Substring(0, 1) + vocal :

    "",

    ApeMat.Length > 0 ? ApeMat.Substring(0, 1) :

    "",

    nom.Length > 0 ? nom.Substring(0, 1) :

    "",

    Fnac);

    }

    //si se genera una excepcion regreso las primeras 13 letras del error

    //de porque lo hago? bueno... eso es motivo personal

     

    catch(Exception Ex)

    {

    rfc = Ex.Message.Substring(0, Ex.Message.Length > 13 ? 13 : Ex.Message.Length);

    }

     

    return rfc.ToUpper();

    }

     

     
    Saturday, July 23, 2011 6:31 PM
  • Saludos:

       En mi blog he posteado una solución que te permitirá no Calcular la CURP, pero si obtenerlo desde la fuente oficial (RENAPO).

       Aqui la url http://johnajfk.spaces.live.com/blog/?_c=BlogPart&_c02_vws=1

       Espero te sirva


    tu enlace no esta disponible??
    Friday, August 05, 2011 10:52 PM
  • Hola!

    oye tu enlace no muestra el blog que mencionas, puedes verificarlo por favor

    saludos.

    Friday, December 16, 2011 10:55 PM
  • /*
    Consulta de CURP (C# .NET)
    Johnatan Flores Carmona, León, Gto. - http://profile.live.com/cid-a0b483e3fd65d9c5/

    Escenario:
    En algún momento de ciertos procesos de las empresas se tiene la necesidad de solicitar la CURP (valida) de uno de los
    involucrados en el proceso. En la mayoría de estas situaciones, los clientes no cuentan con el documento o no recuerdan
    el dato correcto, o bien, se desea que este proceso de adquirir dicha información fuera automatizado y no manual
    (entrar a las paginas oficiales de consulta de CURP proporcionada por la RENAPO).

    Restricciones Técnicas:
    Actualmente, la RENAPO cuenta con un servicio web que puede ser utilizado para obtener la CURP, sin embargo, este servicio
    es de uso exclusivo para dependencias gubernamentales por lo que instituciones privadas no podrán hacer uso de este servicio.

    Solución:
    Actualmente existen publicadas dos paginas oficiales de acceso público para efectuar la consulta de la CURP (RENAPO y 
    Consulta CURP), por lo que la solución sería crear un componente reutilizable (puede ser un web service, un servicio WCF,
    una dll, etc.) que consulte la pagina web y extraer la información de la misma. Para esto, se creará una clase que encapsule 
    la funcionalidad de ejecutar la petición y regrese la respuesta (HttpWebRequest, WebResponse) y una clase que extraiga la 
    información resultante y la convierta a una entidad que facilite el manejo de la información.

    HttpRequestCURP
    La clase HttpRequestCURP es la que contiene el código que Crea, Configura y Ejecuta la petición a la pagina web 
    (Consulta CURP) así como la obtención de la respuesta. Lo primero que debe realizar esta clase es la creación y 
    configuración de la petición, siendo la mejor opción el constructor de la clase. Cabe mencionar que el pase de información
    que realiza la pagina de consultas se hace mediante el método de petición GET (mediante QueryStrings en la URI), por lo que
    el constructor deberá de recibir la cadena que será utilizada como QueryString. A continuación se presenta el código del constructor:
    */

    public HttpRequestCURP(string queryString)
    {
             StringBuilder uriConsulta = new StringBuilder();
             uriConsulta.Append("http://consultas.curp.gob.mx/CurpSP/curp1.do?");
             uriConsulta.Append(queryString);

             this.request = (HttpWebRequest)WebRequest.Create(uriConsulta.ToString());

             request.KeepAlive = true;
             request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.0; es-ES; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729)";
             request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
             request.ContentType = "text/html; charset=UTF-8";

             request.Headers.Set(HttpRequestHeader.AcceptLanguage, "es-es,es;q=0.8,en-us;q=0.5,en;q=0.3");
             request.Headers.Set(HttpRequestHeader.KeepAlive, "300");
    }

    /*
    Es muy importante que las propiedades (KeepAlive, UserAgent, Accept y ContentType) así como los headers (AcceptLanguage y
    KeepAlive") les sean asignados los valores que se presentan en el código expuesto (líneas 9-15), ya que de lo contrario la
    consulta generará respuestas de error.

    Por último, la funcionalidad de obtener la respuesta de la petición será responsabilidad del método “ObtenerStringRespuesta”,
    a continuación se presenta el código de este método:
    */

    public string ObtenerStringRespuesta()
        {
            WebResponse webResponse = null;

            try
            {
                webResponse = this.request.GetResponse();
                Stream stream = webResponse.GetResponseStream();
                Encoding encoding = System.Text.Encoding.GetEncoding("utf-8");
               StreamReader streamReader = new StreamReader(stream, encoding);

               return streamReader.ReadToEnd();
           }
           catch
           {
               throw;
           }
       }

    /*
    DatosCURP
    Esta es la clase entidad que extrae la información de la cadena (string) que regresó la petición a la pagina y la encapsula
    en propiedades para que su manejo se más fácil. Así, esta clase contiene los campos y propiedades necesarios para almacenar 
    la información completa de la CURP: Nombres, Apellidos, Fecha de nacimiento, CURP, Documento Aprobatorio, etc. Dicha 
    información se encuentra dentro de la cadena de respuesta, la cual no es otra cosa que el código HTML de la pagina que
    presenta la información. Un ejemplo de esto se puede observar en el código fuente de la pagina de respuesta en el que 
    encontraremos algo similar al siguiente listado:

       <input type="hidden" name="strCurp" value="XXXX000000XXXXXX00">
       <input type="hidden" name="strPrimerApellido" value="XXXXXX">
       <input type="hidden" name="strSegundoAplido" value="XXXXXXX">
       <input type="hidden" name="strNombre" value="XXXXXXX XXXXXXXX">
       <input type="hidden" name="strSexo" value="HOMBRE">
       <input type="hidden" name="strFechanacimiento" value="01/12/1980">
       <input type="hidden" name="strCveEnt" value="XXXXXXXXXX">
       <input type="hidden" name="strEstatus" value="ALTA NORMAL">
       <input type="hidden" name="strFolio" value="00000000">
       <input type="hidden" name="strFechaAlta" value="22/02/2002">
       <input type="hidden" name="strFolioDP" value="0000000">
       <input type="hidden" name="strCveDP" value="ACTA DE NACIMIENTO">
       <input type="hidden" name="strCURPDOCUMPROBACTAENTIDREGIS" value="00">
       <input type="hidden" name="strNombreCURPDOCUMPROBACTAENTIDREGIS" value="XXXXXXXXXX">
       <input type="hidden" name="strCURPDOCUMPROBACTAMUNICREGIS" value="000">
       <input type="hidden" name="strNombreCURPDOCUMPROBACTAMUNICREGIS" value="XXXX">
       <input type="hidden" name="strsCURPDOCUMPROBANIOREGISTRO" value="1980">
       <input type="hidden" name="strCURPDOCUMPROBACTALIBRO" value="0005">
       <input type="hidden" name="strCURPDOCUMPROBACTATOMO" value=" ">
       <input type="hidden" name="strCURPDOCUMPROBACTAFOJA" value=" ">
       <input type="hidden" name="strCURPDOCUMPROBNUM" value="00000">
       <input type="hidden" name="strCURPDOCUMPROBACTACRIP" value=" ">
       <input type="hidden" name="strImpresiones" value="6">
       <input type="hidden" name="strRecibos" value="6">
       <input type="hidden" name="strCveDependencia" value="00000">
       <input type="hidden" name="strDependencia" value="XXXXX XXXXXXXXX XX XX XXXXXXXX XXXXXXX">
       <input type="hidden" name="depfija" value="04001">
       <input type="hidden" name="entfija" value="erenapo">
       <input type="hidden" name="curpsInvalidas" value="">
       <input type="hidden" name="errores" value="">
       <input type="hidden" name="strEstatus" value="ALTA NORMAL">
       <input type="hidden" name="estcurpclave" value="AN">
       <input type="hidden" name="session" value="000bab2e6c4530cf">

    Por lo anterior, a continuación presento el código que provee la funcionalidad de extraer la información:
    */

    private string ObtenerValorOculto(string httpResponse, string name)
        {
            int posInicial = httpResponse.IndexOf("<input type=\"hidden\" name=\"" + name);
            int posFinal = httpResponse.IndexOf(">", posInicial) + 1;

            string strTemp = httpResponse.Substring(posInicial, posFinal - posInicial);
            posInicial = strTemp.IndexOf("value=");
            posFinal = strTemp.IndexOf("\">");

           return strTemp.Substring(posInicial + ("value=\"").Length, posFinal - posInicial - ("value=\"").Length);
       }

    /*
    Ahora el código que llena todas las propiedades con la información encontrada:
    */

    public void Llenar(string httpResponse)
        {
            this.curp = ObtenerValorOculto(httpResponse, "strCurp");
            this.primerApellido = ObtenerValorOculto(httpResponse, "strPrimerApellido");
            this.segundoApellido = ObtenerValorOculto(httpResponse, "strSegundoAplido");
            this.nombre = ObtenerValorOculto(httpResponse, "strNombre");
            this.sexo = ObtenerValorOculto(httpResponse, "strSexo");
            this.fechaNacimiento = DateTime.Parse(ObtenerValorOculto(httpResponse, "strFechanacimiento"));
            this.entidad = new EntidadFederativa(ObtenerValorOculto(httpResponse, "strCveEnt"));
            this.status = ObtenerValorOculto(httpResponse, "strEstatus");
            this.folio = ObtenerValorOculto(httpResponse, "strFolio");
            this.fechaAlta = DateTime.Parse(ObtenerValorOculto(httpResponse, "strFechaAlta"));
            this.impresiones = int.Parse(ObtenerValorOculto(httpResponse, "strImpresiones"));
            this.recibos = int.Parse(ObtenerValorOculto(httpResponse, "strRecibos"));
            this.dependencia =
                ObtenerValorOculto(httpResponse, "strCveDependencia") + " " +
                ObtenerValorOculto(httpResponse, "strDependencia");

            this.dp = new DocumentoProbatorio(httpResponse);
      }

    /*
    Prueba del código:
    Para probar el código podemos buscar la CURP del gran “Vicente Fernández” mediante el siguiente método main:
    */

    static void Main(string[] args)
    {
      DatosCURP datosConsulta = new DatosCURP(
                                    "fernandez", "Gomez", "vicente",
                                    new DateTime(1940, 2, 17),
                                    "H", new EntidadFederativa("JALISCO"));

      HttpRequestCURP curpRequest = new HttpRequestCURP(datosConsulta.ObtenerQueryString());
      }
      try
      {
      string curpResponse = curpRequest.ObtenerStringRespuesta();
      datosConsulta.Llenar(curpResponse);
      Console.WriteLine(datosConsulta);
      catch
      {
        Console.WriteLine("Por el momento no podemos atender a su consulta.");
      }

      Console.ReadLine();
    }

    /*
    Y ¡¡VOILÀ!!
    Espero este post les sea de utilidad en algún momento.  ¡Felices Compilaciones! 

    Ver tambien:

    https://skydrive.live.com/?provision=1#cid=6947794B0D2461EA&id=6947794B0D2461EA%21300

    */

                                                        
    Thursday, November 15, 2012 9:00 PM