Hola aqui les presento el algoritmo para validar el numero de cédulo de ua persona, a continuación el codigo en VisualBasic205
• El ruc de una persona natural será 13 dígitos, sin letras, sin caracteres especiales , únicamente números, de los cuales los 10 primeros será la cédula de identidad.
• El tercer dígito es menor a 6 ( 0,1,2,3,4,5 ).
• Los tres últimos dígitos son 001,002,003 etc., dependiendo el número de establecimientos adicionales.
• La validación de la cédula de Identidad pasa un algoritmo “Módulo 10”. Al número se lo divide en 13 partes, las 9 primeras son el número mismo, la 10 es el dígito autoverificador, y las 3 restantes indican si es principal o establecimiento adicional.
• Las 2 primeras posiciones corresponden a la provincia donde fue expedida, por lo cual los dos primeros números no será mayor a 22 ni menor a 1.
• Los 3 últimos bytes no podrán ser 000, ya que siempre por lo menos tendrá una principal.
• Los coeficientes usados para verificar el décimo dígito de la cédula, mediante el algoritmo “Módulo 10”

COEFICIENTES = 2.1.2.1.2.1.2.1.2 ( cuando el residuo es 0 el digito verificador es 0)

Ejemplo: cédula = 1710034065

2 1 2 1 2 1 2 1 2 (Coeficiente)
1 7 1 0 0 3 4 0 6 (Número de Cédula)
2 7 2 0 0 3 8 0 12 = 25 (Multiplicar cada dígito de la cédula por el
3 coeficiente, si es mayor a 10 sumo entre dígitos).

sumar las multiplicaciones

Del resultado de la suma
25/10= 2 Residuo 5 10-5 = 5 (dígito verificador)

Public Class BLCedulaIdentidad

Public Function compruebaCedula(ByVal numCedula As String) As Boolean
Dim dig1, dig2, num1, num2, num3, num4, num5, num6, num7, num8, num9 As String
Dim digProvincia, tercerDig, ultimoDig, resultSuma, residuo, valorComprovador As Integer
Try
dig1 = numCedula.Substring(0, 2)
dig2 = numCedula.Substring(2, 1)
digProvincia = CInt(dig1)
If (digProvincia >= 1 Or digProvincia <= 22) Then
tercerDig = CInt(dig2)
If tercerDig 9 Then
dig1 = sumaDig(dig1)
End If
If dig2 > 9 Then
dig2 = sumaDig(dig2)
End If
If dig3 > 9 Then
dig3 = sumaDig(dig3)
End If
If dig4 > 9 Then
dig4 = sumaDig(dig4)
End If
If dig5 > 9 Then
dig5 = sumaDig(dig5)
End If
If dig6 > 9 Then
dig6 = sumaDig(dig6)
End If
If dig7 > 9 Then
dig7 = sumaDig(dig7)
End If
If dig8 > 9 Then
dig8 = sumaDig(dig8)
End If
If dig9 > 9 Then
dig9 = sumaDig(dig9)
End If
valorComprovador = dig1 + dig2 + dig3 + dig4 + dig5 + dig6 + dig7 + dig8 + dig9
Catch ex As Exception
Throw
End Try
Return valorComprovador
End Function

Public Function sumaDig(ByVal numero As Integer) As Integer
Dim strNumero, strDig As String
Dim numDig, i, valor As Integer
Dim digitos As New List(Of String)
Try
strNumero = Str(numero)
numDig = strNumero.Length
For i = 1 To numDig – 1
strDig = strNumero.Substring(i, 1)
digitos.Add(strDig)
Next
For Each ele As String In digitos
valor = valor + CInt(ele)
Next
Catch ex As Exception
Throw
End Try
Return valor
End Function

End Class

Nota: Cuando el residuo es cero(0) el dígito verificador es 0.

About these ads