Dashboard / RG

RG

Ferramenta online para validar e gerar números de RG (Registro Geral) utilizando o algoritmo da SSP-SP (padrão mais comum em sistemas).

Como funciona?

O RG (Registro Geral) no Brasil não possui uma regra de validação nacional unificada, pois cada estado tem autonomia para emitir o documento. Padrão SSP-SP (Mais utilizado): A maioria dos sistemas valida o RG baseando-se na regra da Secretaria de Segurança Pública de São Paulo. O documento possui 9 dígitos (8 de dados + 1 verificador). Cálculo: Multiplica-se os 8 primeiros dígitos por pesos de 2 a 9 consecutivamente. O dígito verificador é calculado subtraindo o resto da divisão da soma por 11 de 11.

  • Se o resultado for 10, o dígito é X.
  • Se o resultado for 11, o dígito é 0.

Implementação

def validar_rg(rg: str) -> bool:
    rg = rg.upper().replace("-", "").replace(".", "")
    rg = "".join(filter(lambda x: x.isdigit() or x == 'X', rg))

    if len(rg) != 9: return False

    soma = 0
    for i in range(8):
        soma += int(rg[i]) * (i + 2)

    resto = soma % 11
    digito = 11 - resto

    if digito == 10: digito_calc = 'X'
    elif digito == 11: digito_calc = '0'
    else: digito_calc = str(digito)

    return digito_calc == rg[8]