DEV Community

Henrique Marques Fernandes
Henrique Marques Fernandes

Posted on • Originally published at marquesfernandes.com on

Como saber e validar o dígito verificador do RG (Registro Geral)

O RG (Registro Geral), ou cédula de identidade, carteira de identidade, identidade é o nosso documento nacional de identificação civil no Brasil. Os dados que constam nesse documento variam de acordo com o órgão responsável pela sua emissão bem como a sua regra matemática de autenticidade. Nesse artigo vamos demonstrar a regra e validação baseado em um documento emitido pela SSP-SP.

O dígito verificador , nada mais é que o dígito que vem após o traço (xx.xxx.xxx- d ). Ele é um mecanismo de autenticação utilizado para verificar a validade e a autenticidade do um valor numérico, funciona como uma prevenção de fraudes ou possíveis erros de transmissão e geração do documento.

Como calcular o dígito verificador do RG

Para aprender a lógica por trás da geração do dígito verificador utilizaremos neste artigo um RG válido e gerado randomicamente: 39.406.714-?

Primeiro vamos fazer uma tabela com 3 linhas e 8 colunas, teremos na primeira linha os 8 primeiros algarismos do número do RG.

| 3 | 9 | 4 | 0 | 6 | 7 | 1 | 4 |
| | | | | | | | |
| | | | | | | | |

Agora precisamos preencher a segunda linha, ela sempre obedecerá uma sequência lógica de números para todos o cálculo de qualquer RG. A sequência é 2,3,4,5,6,7,8 e 9.

| 3 | 9 | 4 | 0 | 6 | 7 | 1 | 4 |
| 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| | | | | | | | |

Agora para obter os valores da terceira linha devemos multiplicar os números de cada linha por coluna. Por exemplo, 3×2, 9×3 e assim por diante.

| 3 | 9 | 4 | 0 | 6 | 7 | 1 | 4 |
| 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 6 | 27 | 16 | 0 | 36 | 49 | 8 | 36 |

Agora que temos nossa tabela completa, precisamos somar todos os números obtidos na terceira linha. Em nosso exemplo teremos: 6 + 27 + 16 + 0 + 36 + 49 + 8 + 36 = 178.

Agora precisamos descobrir o resto da divisão desse número por 11, você pode descobrir usando a calculador do seu computador usando o operador mod : 178 mod 11 = 2.

Agora precisamos subtrair de 11 o resto da nossa divisão e teremos finalmente o nosso dígito verificador: 11 – 2 = 9.

Abaixo você encontra o algoritmo feito em JavaScript ES5 seguindo a lógica explicada acima.


function descobrirDigito(rg) {
    var digitos = rg.split("");
    var totais = [];
    var total = 0;

    // Multiplicamos os que seriam da primeira linha com os da segunda    
    digitos.forEach(function (digito, index) {
        totais.push(Number(digito) * (2 + index));
    });

    // Multiplicamos as colunas
    totais.forEach(function(numero) { total += numero });

    // Descobrimos o resto da divisão
    var resto = total % 11;

    return 11 - resto;
}

console.log(descobrirDigito("39406714"));

Enter fullscreen mode Exit fullscreen mode

Casos especiais

Como tudo no Brasil, temos alguns casos especiais que precisamos estar atentos:

O dígito verificador do RG é X

Quando nos deparamos com o dígito verificador X , isso significa que o resultado da última etapa de nossa conta é 10 (11 – 1). Então o dígito verificador 10 foi substituído pelo algarismo romano X.

O dígito verificador é 0

Qundo nos deparamos com o dígito verificador 0 , isso significa que o resultado da última etapa de nossa conta é 11 (11 – 0). Então o dígito verificador 11 foi substituído pelo algarismo 0.

O post Como saber e validar o dígito verificador do RG (Registro Geral) apareceu primeiro em Henrique Marques Fernandes.

Top comments (0)