Cifra afim
Criptografe ou decifre com a cifra afim, que multiplica a posição de cada letra por a e soma b: com a em 5 e b em 8, AFFINE CIPHER vira IHHWVC SWFRCP. Você também vê o inverso de a, aqui 21. 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
- Texto
- AFFINE CIPHER
- A
- 5
- B
- 8
- Modo de cálculo
- Encrypt
- Resultado
- IHHWVC SWFRCP
- A inversa
- 21
- Comprimento
- 13
- Letras transformadas
- 12
A cifra afim é uma substituição monoalfabética clássica que mapeia a posição x de cada letra pela fórmula linear E(x)=(a·x+b) mod 26, em que a é um multiplicador coprimo com vinte e seis e b é um deslocamento aditivo. A descriptografia multiplica pelo inverso modular de a, de modo que todo par de chaves válido é totalmente reversível. Diferente de ROT13 ou Atbash, as duas chaves são parâmetros livres dentro do conjunto permitido, o que faz da cifra afim uma etapa didática padrão entre a cifra de César de deslocamento fixo e as cifras monoalfabéticas completas com palavra-chave. Ela é usada em trabalhos de criptoanálise, aquecimentos de CTF, livros de enigmas e demonstrações de aritmética modular em sala de aula. Esta capacidade aceita texto não vazio, chaves inteiras a e b e um modo opcional de criptografia ou descriptografia; ela retorna a string transformada com o inverso de a e uma contagem de letras.
Regras de validação, chaves coprimas e armadilhas comuns
A regra decisiva do produto é que a deve ser coprimo com vinte e seis: gcd(a,26) deve ser igual a um para que o inverso modular exista. Os multiplicadores válidos são um, três, cinco, sete, nove, onze, quinze, dezessete, dezenove, vinte e um, vinte e três e vinte e cinco; valores pares e múltiplos de treze compartilham um fator com vinte e seis e são rejeitados com uma mensagem clara de que a não é coprimo.
Não trate a saída como criptografia para confidencialidade: o espaço de chaves é minúsculo, a análise de frequência continua funcionando e a página do produto nunca deve vender a cifra afim como controle de segurança para senhas, tokens ou dados pessoais. Prefira esta página quando a intenção de busca for cifra afim, criptografar e descriptografar afim ou cifra monoalfabética modular; Atbash e ROT13 atendem a intenções de mapeamento fixo, a cifra de cerca atende a transposição e Base64 atende a codificação, por isso permanecem ferramentas separadas.
Ao descriptografar, use o mesmo a e b que produziram o texto cifrado; um par errado gera uma substituição diferente que não corresponderá ao texto original.
Como usar em sala de aula e seus limites
Use a cifra afim gratuita no navegador para conferir tarefas, slides de aula, prática de CTF e execuções pontuais de criptografia ou descriptografia sem escrever código de inverso modular em cada linguagem. Um fluxo típico em sala mostra que a cifra de César é o caso particular a igual a um, depois varia a dentro do conjunto de coprimos e demonstra que multiplicadores pares quebram a inversibilidade. Manuais de suporte podem reverter anotações levemente ofuscadas que a equipe escreveu com chaves de aula conhecidas.
Sites de enigmas podem pré-calcular as respostas para exibição e revelá-las sob demanda com mode decrypt. Combine com análise de frequência ou outras ferramentas clássicas apenas quando uma etapa didática posterior precisar de outra família de cifras — mantenha a afim em sua própria página para que a intenção de SEO continue centrada na substituição modular com chave.
Casos de uso
Trabalhos de criptoanálise e aquecimentos de CTF
Estudantes criptografam frases curtas com a e b conhecidos, depois descriptografam os textos dos colegas ou recuperam chaves sob restrições sem instalar um CAS.
Perguntas frequentes
Como criptografar texto com a cifra afim?
O campo result da resposta contém o texto cifrado.
Como descriptografar um texto cifrado afim?
Envie o texto cifrado como text, o mesmo a e b usados na criptografia e mode decrypt (ou decode). O resultado é o texto original reconstruído quando as chaves coincidem.
O que acontece se a não for coprimo com 26?
O mapeamento afim só é bijetivo quando gcd(a,26)=1; multiplicadores pares e múltiplos de 13 são rejeitados.
A ferramenta de cifra afim é gratuita?
A ferramenta do navegador roda grátis no seu dispositivo.
A cifra afim é criptografia segura?
Não. A afim é uma cifra monoalfabética clássica para enigmas e ensino, não para confidencialidade. Nunca a use para senhas ou dados sensíveis.
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/affine \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"AFFINE CIPHER","a":5,"b":8}'const res = await fetch("https://api.kit.forhosting.com/enc/affine", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "AFFINE CIPHER",
"a": 5,
"b": 8
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/affine",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "AFFINE CIPHER",
"a": 5,
"b": 8
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/affine", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"AFFINE CIPHER","a":5,"b":8}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"AFFINE CIPHER","a":5,"b":8}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/affine", 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
{
"text": "AFFINE CIPHER",
"a": 5,
"b": 8
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.affine",
"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
Quando a compartilha um fator com vinte e seis, a requisição falha com invalid_input porque o mapeamento não seria bijetivo.
Como funciona o mapeamento afim e o que a resposta contém
A criptografia trata cada letra latina como um número de zero a vinte e cinco, multiplica pela chave a, soma a chave b e reduz módulo vinte e seis antes de escrever a letra de volta com a capitalização original. As maiúsculas de A a Z e as minúsculas de a a z usam os mesmos deslocamentos, de modo que frases com capitalização mista mantêm a forma e apenas a identidade das letras muda. Dígitos, espaços, pontuação, emoji e escritas não latinas passam inalterados, então as mensagens conservam espaçamento e símbolos. O modo opcional mode tem encrypt como padrão; encrypt e encode executam o mapeamento direto, enquanto decrypt e decode o revertem. A descriptografia recupera o texto original calculando um inverso modular a_inv tal que a·a_inv ≡ 1 mod 26, e depois avaliando D(y)=a_inv·(y−b) mod 26 para cada letra. Envie JSON com o campo de string obrigatório text contendo qualquer mensagem não vazia, o inteiro obrigatório a entre um e vinte e cinco e coprimo com vinte e seis, e o inteiro obrigatório b entre zero e vinte e cinco; os aliases input, value, s e message funcionam para o corpo, multiplier, key_a e alpha são aliases de a, e shift, key_b e beta são aliases de b. Em caso de sucesso, a resposta inclui result com o texto transformado, mode normalizado para encrypt ou decrypt, a e b repetindo as chaves, a_inv com o inverso usado na descriptografia, length igual à contagem de caracteres da entrada, letters_transformed contando quantas letras A–Z ou a–z foram de fato transformadas, e method igual a affine para que os clientes possam ramificar sem inspecionar o formato da resposta. Entradas idênticas sempre produzem JSON idêntico, porque o caminho é aritmética modular pura, sem rede, sem semente aleatória e sem relógio.
Regras de validação, chaves coprimas e armadilhas comuns
Um text ausente, que não seja string ou vazio gera invalid_input e não é cobrado na API pré-paga depois que o motor rejeita a requisição. A ausência de a ou b, chaves não inteiras, a fora do intervalo de um a vinte e cinco ou b fora do intervalo de zero a vinte e cinco também falham com invalid_input. Espaços, dígitos e pontuação não são removidos: apenas letras latinas participam da substituição, então strings com muita pontuação ainda retornam um resultado completo com uma contagem menor em letters_transformed.
Uso da API, preços, fluxos em sala de aula e limites práticos
Recorra à API pré-paga da KIT quando um backend, uma função serverless, uma plataforma de tutoria ou um SDK precisar de um contrato estável com saldo a US$ 0,002 por item processado com sucesso; falhas de validação nunca consomem saldo após a rejeição. Autores que publicam SDKs podem ligar o campo result diretamente a um botão de copiar, enquanto a, b, a_inv e method tornam os exemplos de OpenAPI autoexplicativos. Mantenha os payloads em tamanhos de texto razoáveis para uma chamada de item em um isolate de Worker; esta ferramenta é para mensagens e trechos, não para blobs binários de vários megabytes.
Casos de integração
Demonstrações de aritmética modular em sala
Professores mostram que só multiplicadores coprimos são inversíveis, contrastam a afim com Atbash ou ROT13 e fixam a igual a cinco e b igual a oito como fixture de livro.
Fixtures de pipeline e CI
Scripts e testes de integração contínua fixam saídas afins determinísticas e o erro de a não coprimo para que bugs acidentais de inverso ou gcd falhem rápido.