lunes, 1 de julio de 2013

Cálculo de CRIP (Clave de Registro e Identidad Personal)

Código para generar la CRIP, usada normalmente en las actas de nacimiento y como parte de la CURP
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package utils;

/**
 *
 * @author cabachu
 */
import java.io.*;
import java.util.*;
// calcula el digito verificador de la CRIP para siglo pasado y el siglo actual 
// necesita tomar los valores de entidad, municipio, oficialia, acta y año 
//regresa un string que contiene la CRIP 
public class CalculaCrip {

    public String obtener_crip(
            String strEntidad,
            String strMunicipio,
            String strOficialia,
            String strAnio,
            String strActa) {
        String strdatos = "";
        String strletras = "JABCDEFGHIJ ";  // constantes de letras 
        String strnumeros = "012345678900";// constantes de numeros
        int ik[] = {3, 2, 7, 6, 5, 4, 3, 2, 7, 6, 5, 4, 3, 2}; // constante para calcular la crip 
        int[] imul = new int[16];
        int[] inum = new int[16];
        int isuma = 0;
        int ix = 0;
        int ia = 0;
        int idigito = 0;
        if (strEntidad.length() == 1) {
            strEntidad = "0" + strEntidad;
        } // se agrega un cero si vien 1 solo digito 
        if (strMunicipio.length() == 1) {
            strMunicipio = "00" + strMunicipio;
        }// se agregan ceros hasta copletar 3 digitos 
        if (strMunicipio.length() == 2) {
            strMunicipio = "0" + strMunicipio;
        }
        if (strOficialia.length() == 1) {
            strOficialia = "0" + strOficialia;
        }// se agregan ceros hasta copletar 2 digitos 
        if (strActa.length() == 1) {
            strActa = "0000" + strActa;
        }// se agregan ceros hasta copletar 5 digitos 
        if (strActa.length() == 2) {
            strActa = "000" + strActa;
        }
        if (strActa.length() == 3) {
            strActa = "00" + strActa;
        }
        if (strActa.length() == 4) {
            strActa = "0" + strActa;
        }
strdatos = strEntidad + strMunicipio + strOficialia + strAnio.substring(2, 4) + strActa; // se contatena la raiz para calcular el digito
        System.out.println(strdatos);
// a cada numero de la raiz se le multiplica por un nuemro de la constante y se suman 
        for (ia = 0; ia < 14; ia++) {
            inum[ia] = Integer.valueOf(strdatos.substring(ia, ia + 1)).intValue();
            imul[ia] = inum[ia] * ik[ia];
            isuma = isuma + imul[ia];
        }
// se obtiene el digito verificador 
        ix = isuma % 11;
        System.out.println("suma  ");
        System.out.println(isuma);
        System.out.println("digito antes de resta ");
        System.out.println(ix);
        if (ix <= 0) {
            idigito = 0;
        } else {
            idigito = 11 - ix;
        }
// se evalua el año y se coloca el digito verificador numero o letra 
        System.out.println("valor de comparacion");
        System.out.println(strAnio.compareTo("1999"));
        if (strAnio.compareTo("1999") > 0) {
            if (idigito == 0) {
                strdatos = strdatos + "J";
            } else {
                System.out.println(idigito);
                strdatos = strdatos + strletras.substring(idigito, idigito + 1);
            }
        } else {
            System.out.println(idigito);
            strdatos = strdatos + strnumeros.substring(idigito, idigito + 1);
        }
        System.out.println(strdatos);
        return strdatos;

    }
}

3 comentarios:

  1. que hago para obtener mi crip?? meto esos codigos a mi pc, o que hago ayuda me lo estan pidiendo

    ResponderEliminar
  2. En el formato nuevo no viene el crip como puedo saber cuál es ayuda

    ResponderEliminar