ForHosting KIT · Matemática

Solucionador de logaritmo discreto

Ao perguntar qual potência de 2 deixa 5 módulo 13, você obtém 9, porque 2^9 ≡ 5 (mod 13). Digite uma base, um alvo e um módulo primo para achar o menor expoente, com uma igualdade que você pode conferir. Grátis no seu navegador.

  • Grátis
  • Funciona no seu navegador
  • Sem cadastro
  • Seus dados não saem do seu aparelho
Use pelo WebAPIE-mailTelegramApp em breve
Se você digitar
G
2
H
5
Potência (W)
13
Você obtém
X
9
Equação
2^9 ≡ 5 (mod 13)

O problema do logaritmo discreto pede um inteiro x tal que uma dada base g elevada a x seja congruente a um alvo h módulo um primo p. Ele sustenta a troca de chaves Diffie–Hellman, a cifra ElGamal e muitos exercícios de livro-texto em criptografia algébrica. Esta capacidade implementa o algoritmo clássico passo de bebê e passo de gigante: uma busca determinística de tempo raiz quadrada que recupera o menor expoente não negativo ou prova que h não é uma potência de g no grupo multiplicativo módulo p.

O que o logaritmo discreto pede

Dados inteiros g, h e um primo p, o logaritmo discreto de h na base g módulo p é qualquer inteiro x que satisfaça g elevado a x congruente a h módulo p. Quando existe solução, o menor representante não negativo na faixa de zero a p menos dois é único uma vez que você fixe essa faixa, e é o valor que esta ferramenta retorna.

Diferente dos logaritmos reais comuns, não há fórmula elementar em forma fechada que funcione para primos arbitrários; a dificuldade de recuperar x para primos grandes cuidadosamente escolhidos é exatamente por que a criptografia de log discreto é útil. No ensino e em experimentos de parâmetros pequenos, porém, você ainda precisa de um solucionador correto e inspecionável: um que valide a hipótese de primalidade, reduza as entradas ao sistema canônico de resíduos, busque sistematicamente e imprima um expoente verificável ou afirme claramente que não existe solução.

Como o passo de bebê e passo de gigante encontra x

O passo de bebê e passo de gigante reescreve o expoente desconhecido como x igual a i vezes m mais j, onde m é aproximadamente a raiz quadrada da ordem do grupo p menos um, e tanto i quanto j vão de zero até m. O algoritmo primeiro armazena cada valor de bebê g elevado a j módulo p num mapa de hash indexado pelo resíduo, depois caminha em passos de gigante multiplicando repetidamente o alvo pelo inverso modular de g elevado a m, procurando cada resíduo intermediário no mapa.

Um acerto fornece tanto i quanto j e, portanto, x. Bases e alvos fora de zero a p menos um são reduzidos módulo p, e a resposta ecoa g, h e p reduzidos para que os chamadores auditem a instância exata resolvida.

Entradas, limites, preço e quando não há solução

Os campos obrigatórios são g (base), h (resíduo alvo) e p (módulo primo). Strings de dígitos são aceitas para inteiros grandes dentro do limite do módulo. Se h não está no subgrupo cíclico gerado por g módulo p — por exemplo, quando g gera apenas um subgrupo próprio e h está fora dele — o solucionador retorna solved false com um expoente nulo e uma mensagem explicativa, em vez de fabricar um x errado.

Esse desfecho é uma computação bem-sucedida, não um erro de cliente, porque a entrada estava bem formada e a resposta matemática é que nenhum logaritmo existe. Erros de cliente cobrem campos ausentes, não inteiros, módulos fora da faixa permitida e p composto. A ferramenta no navegador roda a biblioteca idêntica de graça, sem conta.

Use o resultado para conferir exercícios, gerar testes de resposta conhecida para bibliotecas de criptografia, ou explorar a pertinência a subgrupos antes de escalar parâmetros num projeto de protocolo real.

Verificação de exercícios e provas

Estudantes e professores conferem exercícios de log discreto como 2^x ≡ 5 (mod 13) e recebem tanto o expoente quanto uma congruência imprimível para o gabarito.

Testes de resposta conhecida para código de criptografia

Autores de bibliotecas alimentam instâncias de corpo primo pequeno na CI para que a exponenciação modular e os auxiliares de inverso permaneçam consistentes com uma referência BSGS independente.

Experimentos de pertinência a subgrupos

Pesquisadores testam bases e alvos candidatos módulo um primo pequeno para ver se h está no subgrupo gerado por g antes de passar a parâmetros de tamanho de produção.

Qual algoritmo vocês usam?

Passo de bebê e passo de gigante (Shanks). Ele encontra o menor x não negativo com g^x ≡ h (mod p) em tempo e memória de aproximadamente O(√p), após uma verificação de primalidade determinística em p.

O que acontece se p não for primo?

Esta ferramenta define o log discreto no grupo multiplicativo de um corpo primo e não vai operar em silêncio módulo um composto.

E se não existir expoente?

Você recebe solved: false e x: null com uma mensagem curta. Esse é um desfecho matemático válido (h não é potência de g mod p), não um erro de cobrança ou validação.

Como resolvo 2^x ≡ 5 (mod 13)?

Digite 2 como base, 5 como alvo e 13 como módulo primo. A resposta é 9: ao elevar 2 à nona potência e dividir por 13, sobra resto 5, e nenhum expoente menor consegue isso.

Qual o tamanho máximo do módulo primo?

Até cerca de um trilhão. Isso atende tarefas, explicações de protocolos e experimentos pequenos com resposta rápida; não foi feito para os primos enormes que protegem a criptografia real.

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.

POSThttps://api.kit.forhosting.com/numth/discrete-log

Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.

curl -X POST https://api.kit.forhosting.com/numth/discrete-log \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"g":2,"h":5,"p":13}'
{
  "g": 2,
  "h": 5,
  "p": 13
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "numth.discrete_log",
  "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.

por chamadaUS$ 0,002

Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.

max_p1000000000007
HTTPCódigoO que significa
401unauthorizedToken ausente ou inválido. Confira o header Authorization.
402insufficient_balanceSaldo insuficiente para esta tarefa. Faça uma recarga e tente de novo.
404unknown_typeEsse tipo de tarefa não existe. Confira o campo type no catálogo.
429rate_limitedMuitas requisições em pouco tempo. Espere um instante e tente de novo.

Você fornece três inteiros — g, h e um módulo primo p — e recebe uma resposta JSON estruturada com a solução, os resíduos reduzidos e uma equação de verificação quando existe solução.

O que o logaritmo discreto pede

Esse é o contrato deste endpoint: aritmética modular pura, sem heurísticas e sem chamadas de rede.

Como o passo de bebê e passo de gigante encontra x

O método usa da ordem de raiz quadrada de p multiplicações e entradas de mapa, e é por isso que esta capacidade limita o módulo primo perto de um trilhão: grande o bastante para exercícios, demonstrações de protocolo e testes de estresse de subgrupos pequenos, mas limitado para que memória e latência fiquem previsíveis em um Worker. Antes de buscar, o solucionador roda um teste de primalidade determinístico de Miller–Rabin em p; se p for composto, a chamada falha com invalid_input em vez de inventar um logaritmo numa estrutura que não é o grupo multiplicativo do corpo primo.

Entradas, limites, preço e quando não há solução

O preço da API é um valor fixo de US$ 0,002 por requisição bem-sucedida na unidade item; a validação que falha não é cobrada.

Como resolvo um logaritmo discreto com esta API?

Faça POST dos inteiros g, h e do primo p ao endpoint de logaritmo discreto (ou use o formulário gratuito do navegador). A resposta inclui solved, o expoente x quando existe, os resíduos reduzidos e uma equação de verificação.

Quanto custa a API?

A ferramenta do navegador é gratuita. A API cobra US$ 0,002 por requisição bem-sucedida do seu saldo pré-pago do KIT; entrada inválida não é cobrada. Nenhuma assinatura é exigida.

Ver a documentação completa do KIT →