Dígito verificador Damm
Acrescente um único algarismo a qualquer número e pegue os erros de digitação que realmente acontecem: 572 ganha o dígito verificador Damm 4 e vira 5724, e qualquer algarismo trocado ou inversão de dois vizinhos quebra a verificação. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Exemplo resolvido
- Apenas string de dígitos
- 572
- Modo de cálculo
- Compute
- Entrada
- 572
- Dígito verificador
- 4
- Com verificador
- 5724
Digitar à mão códigos de conta longos, números de série ou IDs de associação é onde se escondem a maioria dos erros de dígito. O algoritmo de dígito verificador Damm acrescenta um único dígito final de modo que toda substituição de um dígito e toda transposição adjacente quebrem o checksum — uma garantia mais forte do que os esquemas simples de módulo 10 para os erros de digitação exatos que as pessoas cometem.
O que o algoritmo Damm detecta e que verificações mais fracas deixam passar
Dígitos verificadores existem porque humanos e teclados introduzem danos previsíveis: uma tecla errada, dois dígitos vizinhos trocados, ou um dígito inserido ou perdido. Muitos esquemas do dia a dia, incluindo a clássica regra de Luhn usada em cartões de pagamento, detectam a maioria dos erros de um dígito e muitas trocas adjacentes, mas deixam alguns pares de transposição invisíveis — notavelmente 09 versus 90 sob Luhn.
H. Michael Damm projetou uma construção diferente: os dígitos são combinados da esquerda para a direita através de uma tabela de quasigrupo totalmente antissimétrica fixa de 10 por 10, partindo de um valor interino zero. As propriedades algébricas garantem que alterar qualquer dígito, ou trocar quaisquer dois dígitos adjacentes, não pode deixar o valor interino final em zero.
Essa é a vantagem prática para números de conta, SKUs de almoxarifado, IDs de paciente ou de chamado e qualquer código de comprimento fixo em que um único erro de digitação, de outra forma, encaminharia o trabalho para o registro errado. Esta ferramenta implementa essa tabela padrão e o percurso padrão da esquerda para a direita; ela não inventa uma variante da casa. A saída sempre nomeia o algoritmo como damm, para que sistemas a jusante possam registrar qual esquema protegeu o valor.
Onde os dígitos verificadores Damm se encaixam em sistemas reais
Programas de associação e fidelidade emitem IDs numéricos sequenciais ou aleatórios e precisam de um dígito final que agentes de call center e teclados móveis não corrompam silenciosamente. Equipes de almoxarifado e logística imprimem códigos de caixa ou de ativo; uma transposição de dois dígitos no fluxo de um leitor de mão é comum, e o Damm detecta toda troca adjacente que esquemas mais fracos deixam passar.
Escritórios de saúde e educação que ainda movimentam formulários em papel com números de referência de múltiplos dígitos podem validar na entrada e mostrar uma correção imediata em vez de criar um prontuário ou uma matrícula duplicada. Testes de integração e rotinas de qualidade de dados recalculam o dígito verificador esperado para cada linha de uma exportação CSV e sinalizam as linhas em que o número completo armazenado não corresponde mais, o que detecta tanto edições humanas quanto erros de deslocamento por um em geradores.
Equipes de produto que já usam Luhn para campos semelhantes a cartão ainda podem adotar o Damm para identificadores internos, nos quais a propriedade de transposição mais forte importa mais do que as convenções das redes de cartões. Não trate uma verificação Damm aprovada como prova de autorização ou de propriedade — ela apenas prova que a string de dígitos está bem formada sob este algoritmo, o mesmo padrão de honestidade que você aplica a qualquer checksum.
Casos de uso
Auditar colunas de ID exportadas
Valide em lote cada ID numérico em um CSV de parceiro ou exportação de almoxarifado e coloque em quarentena as linhas cujo dígito verificador não corresponde mais ao valor esperado recalculado.
Perguntas frequentes
O que é um dígito verificador Damm?
É um único dígito final calculado com o algoritmo de quasigrupo de H. Michael Damm, de modo que qualquer dígito errado ou qualquer transposição adjacente faça o número completo falhar na validação.
O que acontece com letras, espaços ou hifens?
Forneça apenas os dígitos 0-9; tarefas de validação que falham não são faturadas.
A ferramenta de dígito verificador Damm é gratuita?
A ferramenta de navegador é gratuita e roda localmente.
Qual é a diferença entre Damm e o dígito verificador Luhn?
O Luhn pega quase todos os erros de um algarismo, mas deixa passar algumas inversões de vizinhos, como 09 digitado como 90. O Damm pega qualquer algarismo trocado e qualquer inversão de dois algarismos vizinhos, o que ajuda em números de conta ou de associado digitados à mão.
Como confiro um número que já tem o dígito Damm?
Escolha a opção de validar e digite o número completo. Ao passar o número inteiro, com o dígito verificador, pela tabela Damm, o resultado precisa terminar em zero; se não terminar, algum algarismo foi digitado errado.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/enc/damm \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"number":"572"}'const res = await fetch("https://api.kit.forhosting.com/enc/damm", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"number": "572"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/damm",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"number": "572"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/damm", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"number":"572"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"number":"572"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/damm", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"number": "572"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.damm",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
Esta capacidade calcula esse dígito para um payload que você já possui, ou valida um número completo que já o inclui, e rejeita entradas não numéricas com um erro claro em vez de ignorar silenciosamente o lixo. Rode gratuitamente no navegador ou chame a API do KIT pelo preço publicado; ambos os caminhos usam a mesma aritmética pura, sem rede e sem números armazenados.
O que o algoritmo Damm detecta e que verificações mais fracas deixam passar
Por causa da estrutura dessa tabela, depois que você processa o payload, o dígito interino é exatamente o dígito verificador que você deve acrescentar, e processar o número completo, incluindo esse dígito, sempre termina em zero quando o número está bem formado. Comparado com os dígitos verificadores da família de códigos de barras (EAN, UPC, ISBN), o Damm não está atrelado a um layout GTIN de varejo — ele se aplica a qualquer string de dígitos pura que você escolha como payload, e é por isso que pertence a um utilitário de codificação em vez de a um validador de código de barras de produto.
Como calcular um dígito verificador ou validar um número completo
Envie um campo number que contenha apenas os caracteres 0 a 9. Esse formato facilita mostrar “você digitou X, esperado Y” em um formulário sem uma segunda chamada. Strings vazias, number ausente e valores de mode inválidos falham antes de qualquer consulta à tabela e não são faturados. Prefira compute quando emitir novos IDs; prefira validate quando receber um ID de um usuário, de um arquivo de parceiro ou de uma etiqueta escaneada e precisar de um portão booleano antes de consultar o registro. Espaços, hifens, letras, pontos decimais e notação científica são rejeitados como entrada não numérica com invalid_input, para que você nunca aceite um valor silenciosamente truncado. O modo compute é o padrão: o motor percorre o payload pela tabela Damm, retorna check_digit como uma string de um caractere e retorna with_check como o payload mais esse dígito, para que você possa armazenar ou imprimir uma única string. O modo validate espera um número completo de pelo menos dois dígitos (um ou mais dígitos de payload mais o dígito verificador final). A resposta reporta valid verdadeiro quando o percurso completo termina no valor interino zero, e sempre inclui o check_digit final, o expected_check_digit recalculado somente a partir do payload e a substring de payload sem o último dígito. Como o caminho é análise pura, sem relógio, fonte aleatória ou rede, a mesma entrada sempre produz o mesmo JSON na ferramenta gratuita de navegador e na API. A US$ 0,002 por requisição bem-sucedida, você pode proteger importações em massa, formulários de cadastro e impressoras de etiquetas em lote sem negociar um plano personalizado.
Onde os dígitos verificadores Damm se encaixam em sistemas reais
Em todo fluxo de trabalho o contrato é o mesmo: apenas dígitos, compute ou validate, JSON estruturado que você pode testar com valores de referência, comportamento idêntico gratuito no navegador ou via saldo pré-pago do KIT, e falha honesta quando a entrada não é numérica.
Casos de integração
Emitir IDs de associação ou de conta
Gere um payload sequencial, chame o modo compute e armazene with_check para que todo novo ID carregue um dígito final Damm antes de ser impresso em cartões ou enviado por e-mail aos membros.
Validar códigos digitados ou escaneados na entrada
Quando um usuário ou leitor envia um número completo, chame o modo validate e bloqueie a consulta quando valid for falso, mostrando expected_check_digit para ajudar a corrigir um único erro de digitação.
Perguntas técnicas
Como calculo um dígito verificador Damm com esta API?
Faça um POST com number definido como os dígitos do payload e mode compute (ou omita mode). A resposta inclui check_digit e with_check (payload mais o dígito verificador).
Como valido um número que já tem um dígito verificador?
Faça um POST com a string de dígitos completa e mode validate. A resposta inclui valid, check_digit, expected_check_digit e o payload sem o último dígito.