Cifra Porta
Com a frase-chave PORTA, “Hello, World!” vira “Oytub, Chjuq!”, e a mesma frase traz o original de volta. As letras passam por treze alfabetos em pares, enquanto espaços, números e pontuação ficam no lugar. 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
- Hello, World!
- Key
- PORTA
- Resultado
- Oytub, Chjuq!
- Codificação
- porta
- Letras da chave
- PORTA
- Comprimento da chave
- 5
A cifra Porta é uma cifra polialfabética clássica e recíproca inventada por Giovanni Battista della Porta: cada letra latina é transformada em relação a uma frase-chave repetida usando um de treze alfabetos emparelhados e, como essa tabela é a sua própria inversa, criptografar o texto cifrado com a mesma chave restaura o texto original. Você cola qualquer texto e uma frase-chave com pelo menos uma letra latina; as letras A a Z e a a z se movem sob a chave enquanto dígitos, espaços, pontuação e outros caracteres permanecem, de modo que a estrutura legível sobrevive.
Como a cifra Porta transforma o texto com uma frase-chave
Porta é um parente polialfabético da família Vigenère, mas sua tabela de criptografia é diferente e recíproca. As vinte e seis letras da chave se agrupam em treze linhas: A e B compartilham um alfabeto, C e D o seguinte, e assim até Y e Z. Para cada caractere alfabético da mensagem, tome a próxima letra da frase-chave (a chave se repete enquanto houver letras a transformar), escolha a linha desse par e mapeie a letra do texto claro por essa tabela de meio alfabeto.
Letras da primeira metade do alfabeto (A a M) caem na segunda metade (N a Z) com uma rotação que depende da linha, e letras da segunda metade caem na primeira; o tipo de caixa é preservado, de modo que um H maiúsculo vira letra cifrada maiúscula e a minúscula permanece minúscula. Caracteres fora de A a Z e a a z —incluindo espaços, vírgulas, dígitos, emoji e letras acentuadas fora do bloco latino básico— são copiados sem alteração e não avançam o ponteiro da frase-chave.
Esse desenho coincide com as tabelas Porta dos manuais de criptografia clássica. Como a tabela é uma involução, aplicar a mesma frase-chave uma segunda vez desfaz a primeira transformação: criptografar e descriptografar são a mesma operação, assim esta ferramenta não precisa de um indicador de modo separado. Matematicamente cada passo é aritmética modular inteira sobre uma estrutura fixa de treze pares; não há arredondamento em ponto flutuante da chave, nem chamada de rede, nem semente aleatória, nem carimbo de tempo.
Esta página implementa apenas a Porta clássica —não a adição Vigenère, não a subtração Beaufort, não AES e não um recuperador automático de chaves que testa cada palavra do dicionário por você. Essas são ferramentas e intenções de busca distintas, com suas próprias páginas.
Onde ferramentas de cifra Porta aparecem no trabalho real
Cursos introdutórios de criptografia apresentam Porta depois de César e junto a outras tabelas polialfabéticas para que os alunos pratiquem mapas recíprocos que não exigem regra de descriptografia separada e vejam como pares de letras da chave reduzem vinte e seis letras a treze alfabetos. Aquecimentos de capture-the-flag e caças a puzzles ainda escondem mensagens Porta ou variantes, e quem resolve quer uma transformação previsível por frase-chave, não uma suíte geral de criptoanálise.
Equipes de suporte e de conteúdo às vezes ofuscam levemente spoilers, respostas de questionários ou rótulos internos com uma cifra clássica por frase-chave e precisam do caminho inverso sem instalar uma biblioteca criptográfica específica da linguagem. Harnesses de teste de engenharia geram vetores de referência para pipelines de transformação de strings e precisam de saídas estáveis quando a chave se repete, quando caracteres não alfabéticos interrompem a mensagem e quando se misturam maiúsculas e minúsculas.
Se você precisa de um deslocamento César de uma só letra, adição Vigenère multi-alfabeto, subtração Beaufort, criptografia autenticada forte, codificação Base32 ou Base64, ou recuperação automática de chave por análise de frequências, trate-os como intenções de busca e páginas distintas em vez de sobrecarregar esta página clássica de Porta por frase-chave.
Casos de uso
Demos polialfabéticas recíprocas em sala de aula
Criptografe e descriptografe frases de exemplo com uma frase-chave conhecida para que as aulas de cripto introdutória mostrem os treze alfabetos emparelhados de Porta sem um modo de descriptografia separado.
Cifras por frase-chave em puzzles e CTF
Aplique ou inverta uma Porta com frase-chave em strings de desafio sem escrever um script avulso para cada conjunto de problemas.
Perguntas frequentes
O que é a cifra Porta?
Uma cifra polialfabética clássica e recíproca que mapeia cada letra por um de treze alfabetos selecionados por pares de letras da chave (A/B, C/D, …, Y/Z). A mesma operação criptografa e descriptografa.
Como descriptografo um texto cifrado com Porta?
Chame de novo a mesma capacidade com o texto cifrado como text e a frase-chave original. Como Porta é autoinversa, uma segunda passagem restaura o texto claro.
O que acontece se a chave estiver ausente ou vazia?
A frase-chave deve conter pelo menos uma letra latina A–Z ou a–z; chaves ausentes, vazias ou sem letras são rejeitadas e não cobradas.
Espaços e pontuação são criptografados?
Não. Apenas A–Z e a–z são transformados. Espaços, dígitos, pontuação e outros caracteres passam inalterados e não avançam a chave.
Quanto custa?
A ferramenta do navegador é gratuita e roda localmente.
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/porta \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Hello, World!","key":"PORTA"}'const res = await fetch("https://api.kit.forhosting.com/enc/porta", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "Hello, World!",
"key": "PORTA"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/porta",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "Hello, World!",
"key": "PORTA"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/porta", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"Hello, World!","key":"PORTA"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"Hello, World!","key":"PORTA"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/porta", 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": "Hello, World!",
"key": "PORTA"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.porta",
"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
Uma chave ausente, vazia ou sem caracteres alfabéticos é rejeitada de imediato com invalid_input, assim corretores de tarefas e scripts nunca caem em silêncio para uma frase-chave padrão.
Como a cifra Porta transforma o texto com uma frase-chave
O mesmo texto e a mesma frase-chave sempre produzem o mesmo JSON.
O que você envia e o que recebe de volta
Envie um campo de string obrigatório chamado text e um campo de string obrigatório chamado key. Falhas de validação não consomem saldo pré-pago. Verificações clássicas incluem transformar Hello, World! com a frase-chave PORTA, verificar que alimentar o texto cifrado e a mesma chave devolve a frase original, e confirmar que uma chave vazia é rejeitada em vez de tratada como identidade nula. O texto deve ser uma string não vazia da mensagem a transformar; a chave não deve ficar vazia após o filtro alfabético: strings só de espaços e chaves que contenham apenas dígitos ou símbolos falham com invalid_input e uma mensagem clara em inglês que menciona o requisito de chave ausente ou vazia. Em caso de sucesso a resposta inclui result como a string transformada, encoding com valor porta, key_letters como o fluxo em maiúsculas A–Z realmente usado, key_length como quantas posições alfabéticas esse fluxo tem, input_length e output_length, shifted_chars como a contagem de caracteres alfabéticos movidos, reciprocal em true, e uma string formula que descreve a regra da tabela de pares para que os clientes possam afirmar o perfil atingido. Text ausente, key ausente, objetos que não sejam string em qualquer dos campos, texto vazio e chaves sem letras falham com invalid_input.
Onde ferramentas de cifra Porta aparecem no trabalho real
Como esta capacidade é um motor de parse puro, o preço da API é a base publicada de US$ 0,002 por item bem-sucedido e a validação falha não consome saldo.
Casos de integração
Ofuscação leve de spoilers e rótulos
Embaralhe respostas de questionários ou rótulos internos com uma frase-chave clássica e restaure-os depois com o mesmo contrato no navegador ou na API.