Cifra de escítala
Com 5 colunas, HELLOWORLD vira HWEOLRLLOD: o texto é escrito linha por linha numa grade, como uma tira enrolada num bastão, e lido coluna por coluna. O mesmo número de colunas desfaz tudo e nenhum caractere se perde. 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
- HELLOWORLD
- Colunas
- 5
- Modo de cálculo
- Encrypt
- Texto
- HWEOLRLLOD
- Comprimento
- 10
A cifra de escítala é uma cifra de transposição clássica da Grécia antiga: você enrola uma tira de escrita em torno de um bastão de diâmetro fixo, escreve ao longo do bastão e depois desenrola a tira, de modo que as letras se embaralham em uma ordem por colunas. Esta capacidade implementa essa ideia como uma transposição determinística por colunas: você fornece o texto, uma chave inteira de colunas (o diâmetro) e o modo cifrar ou decifrar. A cifragem escreve os caracteres em uma grade linha a linha e os lê descendo por cada coluna; a decifragem inverte o mesmo mapa com a mesma chave, de forma que o comprimento e todos os caracteres — incluindo espaços e pontuação — são preservados.
Como funciona a transposição da escítala
Uma escítala não é uma cifra de substituição: cada letra continua sendo ela mesma; só a ordem muda. Pense na chave como o número de colunas em um cilindro. No modo cifrar, o motor dispõe sua cadeia em um layout retangular preenchido da esquerda para a direita e de cima para baixo, com o número de colunas que você escolheu.
Últimas linhas incompletas deixam células vazias que nunca são preenchidas nem emitidas, de modo que o comprimento do texto cifrado sempre é igual ao do texto claro e nenhum caractere de preenchimento é inventado. Ler descendo a coluna zero, depois a coluna um, e assim por diante, produz o texto cifrado — o mesmo embaralhamento que você veria ao desenrolar uma tira escrita em torno de um bastão desse diâmetro.
O modo decifrar reconstrói esse layout por colunas a partir do texto cifrado e o lê de novo da esquerda para a direita, restaurando a cadeia original sempre que o mesmo valor de colunas é usado. Como o mapa é uma permutação pura de índices, a operação é determinística entre execuções, livre de aleatoriedade, relógios ou consultas de rede, e segura para testes de referência.
Escolher uma chave de colunas errada ao decifrar produz uma permutação errada, não uma falha — exatamente o comportamento que os alunos esperam ao tentar diâmetros próximos.
Uso em sala de aula, CTF e produto — e custo
Cursos de história e criptografia usam a escítala para apresentar a transposição antes da substituição e das cifras modernas; laboratórios podem mostrar que conhecer o diâmetro recupera a mensagem, enquanto diâmetros errados não. Autores de capture-the-flag escondem bandeiras curtas sob uma chave de colunas e verificam as soluções contra esta mesma rotina determinística. Redatores de documentação incorporam pares de cifrar e decifrar em tutoriais sem manter um script offline separado.
Essa paridade mantém alinhadas as soluções de exercícios, os valores de referência de CI e as demonstrações de produção. Não trate a escítala como confidencialidade para segredos reais — ela é uma ferramenta de ensino e de quebra-cabeça —, mas trate a chave de colunas como o parâmetro secreto desse sistema de brinquedo.
Casos de uso
Laboratórios de criptografia em sala de aula
Demonstre a transposição clássica: os alunos cifram uma frase com uma chave de colunas e depois a recuperam decifrando com o mesmo diâmetro.
Autores de CTF e quebra-cabeças
Esconda cadeias curtas de desafio sob uma chave de escítala e verifique as submissões dos solucionadores contra o mesmo par determinístico de cifrar/decifrar.
Documentação e demonstrações de playground
Gere exemplos estáveis de texto cifrado para tutoriais e playgrounds de cifras clássicas sem manter tabelas de permutação à mão.
Perguntas frequentes
O que é uma cifra de escítala?
Uma cifra de transposição clássica: os caracteres mantêm seus valores, mas mudam de posição de acordo com uma chave de colunas (diâmetro). Esta ferramenta implementa o modelo padrão de escrever por linhas e ler por colunas.
Por que columns deve ser pelo menos 2?
Um diâmetro de uma coluna deixa o texto na mesma ordem, então não é uma chave de escítala significativa.
A decifragem precisa do mesmo valor de columns?
Sim. Cifrar e decifrar usam a mesma chave inteira. Um valor de columns diferente aplica uma permutação diferente e não restaura o texto original.
Espaços e pontuação são preservados?
Sim. Todo caractere da cadeia participa da transposição. Nada é removido, convertido para minúsculas ou preenchido.
Qual é o custo?
A página interativa roda de graça no seu navegador.
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/scytale \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"HELLOWORLD","columns":5,"mode":"encrypt"}'const res = await fetch("https://api.kit.forhosting.com/enc/scytale", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "HELLOWORLD",
"columns": 5,
"mode": "encrypt"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/scytale",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "HELLOWORLD",
"columns": 5,
"mode": "encrypt"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/scytale", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"HELLOWORLD","columns":5,"mode":"encrypt"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"HELLOWORLD","columns":5,"mode":"encrypt"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/scytale", 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": "HELLOWORLD",
"columns": 5,
"mode": "encrypt"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.scytale",
"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
Menos de duas colunas é recusado com invalid_input, porque uma única coluna deixa a mensagem inalterada e não é um diâmetro de escítala significativo. Use a ferramenta gratuitamente nesta página, ou chame o mesmo algoritmo puro pela API a US$ 0,002 por requisição, para demonstrações em sala de aula, apoio a CTFs e exemplos de documentação que precisam permanecer reprodutíveis.
Como funciona a transposição da escítala
Colunas iguais a um ou zero copiariam o texto inalterado ou seriam indefinidas como diâmetro; esta API, portanto, exige um inteiro de pelo menos dois e reporta invalid_input quando essa regra é violada.
Chamando a API e lendo o resultado
Espaços, quebras de linha e pontuação atravessam a grade como qualquer outro caractere; nada é removido nem convertido para minúsculas, o que mantém intactas as demonstrações estilo senha e as cadeias de várias linhas de sala de aula. Faça o ciclo completo cifrando com um dado valor de colunas e decifrando com o mesmo valor; chaves diferentes não restauram o original. Texto vazio é permitido e retorna um resultado vazio com comprimento zero. Envie três campos: text (a cadeia de texto claro ou cifrado), columns (diâmetro inteiro, mínimo dois) e mode (cifrar ou decifrar; aliases curtos como enc e dec são aceitos). Text ausente, um text que não seja cadeia, um valor de columns ausente ou não inteiro, columns menor que dois, ou um mode desconhecido, todos falham com invalid_input e uma mensagem que nomeia o problema, para que formulários e scripts exibam um retorno corrigível. No sucesso, o JSON inclui text (a cadeia transformada), mode (cifrar ou decifrar em forma canônica), columns (a chave inteira que você usou) e length (contagem de caracteres do resultado, igual ao comprimento da entrada). Prefira este endpoint quando a intenção de busca for especificamente escítala ou transposição clássica por bastão; ferramentas AEAD modernas atendem a outra intenção e a outro modelo de ameaça.
Uso em sala de aula, CTF e produto — e custo
Equipes de produto que publicam playgrounds de cifras clássicas podem chamar a API para conferências no servidor enquanto os visitantes experimentam gratuitamente no navegador. Como o trabalho é indexação pura de cadeias em tempo de parse, sem serviço externo, a latência permanece baixa e o modelo de custo é simples: tente conversões ilimitadas de graça nesta página, e depois automatize entradas idênticas a US$ 0,002 por item bem-sucedido do saldo pré-pago do KIT ao integrar a partir de scripts ou serviços de backend. Mapeie os rótulos da interface para cifrar e decifrar, valide columns no cliente com o mesmo mínimo de dois e exiba as mensagens invalid_input ao lado do controle de diâmetro quando os usuários enviarem uma coluna ou um valor não inteiro.