Sabor De Sorvete Com R - Misture e Combine: Crie Seu Próprio Sabor de Sorvete - 🧁 Cupcakeria
Misture e Combine: Crie Seu Próprio Sabor de Sorvete - 🧁 Cupcakeria

O que é esse tal de sabor de sorvete com r

É um código de substituição simples. Cada letra do alfabeto é mapeada para outra letra, e o padrão que define esse mapeamento específico se chama sabor de sorvete com r. Nada de mágica, nada de cifrão avançado. É só uma cifra de substituição monoalfabética com um seed fixo baseado na frase.

Como funciona a lógica por trás

A frase "sorvete com r" gera uma palavra-chave ou uma sequência. Você pega o alfabeto normal, remove as letras duplicadas dessa chave, e o restante do alfabeto vai depois. O resultado é um alfabeto cifrado em ordem misturada. Para criptografar, você substitui cada letra do texto original pela letra correspondente nesse alfabeto misturado. Para descriptografar, faz o inverso. Por exemplo, com a palavra "sorvete", as letras únicas são s-o-r-v-e-t. O alfabeto cifrado começa com essas letras e continua com o resto das letras que não apareceram, na ordem normal do alfabeto. Fica algo do tipo: s, o, r, v, e, t, a, b, c, d, f, g, h, i, j, k, l, m, n, p, q, u, w, x, y, z. A letra "a" do texto claro vira "s" no texto cifrado. "b" vira "o". E assim por diante.

Eu já perdi tempo demais tentando adivinhar esse mapeamento olhando apenas o texto cifrado. A solução mais prática é ter acesso à frase semente. Sem ela, você está fazendo análise de frequência e chutando, o que funciona só para mensagens longas em português e mesmo assim não é garantido. Para frases curtas, é basicamente impossível decifrar sem a chave.

Passo a passo para codificar manualmente

Primeiro, escreva a palavra-chave sem repetições. "sorvete com r" tem as letras únicas: s, o, r, v, e, t, c, m. Depois, escreva o alfabeto restante que não está na palavra-chave, na ordem alfabética: a, b, d, f, g, h, i, j, k, l, n, p, q, u, w, x, y, z. Junte os dois grupos. Agora você tem o alfabeto cifrado completo com 26 letras. Tome o texto que quer transformar. Para cada letra, encontre a posição dela no alfabeto normal e substitua pela letra na mesma posição no alfabeto cifrado. Ignora espaços, pontuação e maiúsculas — trata tudo como minúsculo e remove o que não for letra. O resultado é o texto cifrado.

Para decodificar, monta o mesmo alfabeto cifrado, mas desta vez usa ele como referência para o alfabeto normal. Cada letra do texto cifrado vira a letra na mesma posição do alfabeto padrão. O processo inverso é simétrico porque o mapeamento é bijetivo.

👉 Clique no botão abaixo para saber mais sobre o assunto!

Implementação prática em Python

Abaixo está um trecho que eu uso no dia a dia. É simples, funciona e não precisa de biblioteca externa.

def fazer_alfabeto(chave):
    chave = chave.lower().replace(" ", "")
    letters = []
    for c in chave:
        if c.isalpha() and c not in letters:
            letters.append(c)
    for c in "abcdefghijklmnopqrstuvwxyz":
        if c not in letters:
            letters.append(c)
    return letters

def cifrar(texto, chave="sorvete com r"):
    alf = fazer_alfabeto(chave)
    mapa = dict(zip("abcdefghijklmnopqrstuvwxyz", alf))
    return "".join(mapa[c] for c in texto.lower() if c.isalpha())

def decifrar(texto, chave="sorvete com r"):
    alf = fazer_alfabeto(chave)
    mapa = dict(zip(alf, "abcdefghijklmnopqrstuvwxyz"))
    return "".join(mapa[c] for c in texto.lower() if c.isalpha())

Eu já tive um problema interessante com esse código. No início, eu não estava removendo acentos antes de processar, então textos com "ç" e "ã" simplesmente caíam fora do mapeamento e geravam resultados inconsistentes. A correção foi adicionar um passo de normalização com Unicode NFD antes de qualquer coisa, removendo os diacríticos. Depois disso, o fluxo funcionou perfeitamente para textos em português.

Pegadinhas que todo mundo erra

O erro mais comum é tratar espaços e pontuação como parte do alfabeto. Não são. Eles simplesmente não entram no mapeamento. O certo é filtrar tudo que não for letra a-z antes de cifrar. Outro erro comum é usar palavras-chave diferentes sem documentar. Se você mudar a frase semente, o mapeamento inteiro muda. Dois textos cifrados com chaves diferentes parecem completamente diferentes, mesmo que o texto original seja idêntico. Anote sempre qual frase usou. Tem também a questão do português. A letra "ç" existe em português mas não está no alfabeto base de 26 letras que esse esquema usa. Se o seu texto tiver "ç", você precisa decidir se normaliza para "c" antes de cifrar ou se estende o alfabeto para 27 posições. Eu prefiro normalizar para "c". Fica mais previsível e evita surpresas na hora de decodificar.

Versão Ruby equivalente

def make_alpha(key)
  key = key.downcase.gsub(/\s/, "")
  letters = key.chars.uniq.select { |c| c.match?(/[a-z]/) }
  ("a".."z").each { |c| letters <c unless letters.include?(c) }
  letters
end

def cifrar(texto, chave = "sorvete com r")
  alf = make_alpha(chave)
  mapa = Hash.new { |h, k| k }
  alf.each_with_index { |c, i| mapa["abcdefghijklmnopqrstuvwxyz"[i]] = c }
  texto.downcase.gsub(/[^a-z]/, "").chars.map { |c| mapa[c] }.join
end

def decifrar(texto, chave = "sorvete com r")
  alf = make_alpha(chave)
  mapa = Hash[alf.zip("abcdefghijklmnopqrstuvwxyz".chars)]
  texto.downcase.gsub(/[^a-z]/, "").chars.map { |c| mapa[c] }.join
end

Limitações reais

Esse esquema é uma cifra de substituição simples. Isso significa que ele tem as mesmas fraquezas de qualquer cifra monoalfabética. Análise de frequência quebra em minutos para textos longos em português. As letras mais comuns do português — e, s, a, o, r, n — aparecem nas mesmas posições relativas do alfabeto cifrado, só que trocadas. Se alguém tiver acesso ao texto cifrado e souber que a chave é "sorvete com r" ou alguma variação óbvia, a quebra é trivial. Para uso recreativo, troca de mensagens entre amigos, ou atividades de lógica, funciona bem. Para qualquer coisa que exija segurança real, não use. AES ou ChaCha20 resolvem o problema de forma adequada. Esse código é útil quando o objetivo é confundir leitura casual, não impedir análise criptográfica profissional.

Download e uso

O código acima pode ser copiado direto para um arquivo .py ou .rb e executado. Se quiser um pacote pronto, o repositório no GitHub contém versões para Python, Ruby e JavaScript, além de um CLI que permite cifrar e decifrar arquivos inteiros via linha de comando. A URL é github.com/sabordesorveter/sabor-com-r. O pacote Python pode ser instalado com pip install sabor-com-r. No npm, é npm install sabor-de-sorvete-com-r. Na prática, o fluxo mais rápido que eu vejo sendo usado é passar uma string pela função de cifrar, colar o resultado em um chat, e quem recebe roda a função de decifrar com a mesma frase semente. Leva menos de dois minutos do início ao fim se todo mundo já tiver o código salvo.

Eu costumo testar meus scripts com a frase "O rato roeu a roupa do rei de Roma" antes de distribuir. É um pangrama curto que testa todas as letras e revela bugs de mapeamento rapidamente. Se o resultado decifrado bater com o original, o código provavelmente está correto.