Como criptografar e descriptografar texto com Rabbit

Uma caixa para o texto e outra para a senha: Criptografar transforma o texto simples em uma cifra Rabbit do CryptoJS e Descriptografar devolve o texto em UTF-8. Tudo roda dentro da página.

A senha não é gravada em lugar nenhum e cada execução usa um sal aleatório novo, então o mesmo texto com a mesma senha gera uma cifra diferente a cada vez.

  1. Cole na caixa de cima o texto que deseja criptografar ou uma cifra Rabbit existente que comece com U2FsdGVkX1.
  2. Digite a senha no campo ao lado dos botões. A chave é derivada dela, então é preciso usar a mesma para ler o resultado de volta.
  3. Pressione Criptografar ou Descriptografar. O resultado substitui o anterior e, se a execução falhar, ele é apagado em vez de deixar texto antigo na tela.
  4. Copiar leva o resultado para a área de transferência; Limpar esvazia os dois campos e o resultado.

O que a saída realmente é

O contêiner Salted__ e o sal aleatório

A saída é o contêiner que o CryptoJS grava para cifras com senha: os oito bytes ASCII Salted__ (U2FsdGVkX1 em Base64), oito bytes de sal aleatório e a cifra, tudo em Base64.

A chave de 128 bits e o IV de 64 bits são derivados da senha e do sal com EVP_BytesToKey baseado em MD5, então a senha nunca é usada como chave direta. Duas execuções do mesmo texto diferem porque o sal é novo a cada vez; isso é esperado, não um erro.

O que a página verifica e o que não verifica

Rabbit é uma cifra de fluxo sem etiqueta de autenticação e a página não distingue uma cifra editada de uma íntegra: ao trocar um caractere Base64 o texto descriptografado mudou ou a decodificação UTF-8 falhou e mostrou o aviso (os dois casos foram observados ao editar caracteres isolados).

Uma senha errada normalmente falha na decodificação UTF-8 e mostra o aviso, mas um resultado legível não prova autenticidade: compare um checksum quando o conteúdo importar.

Compatibilidade e limites

A cifra criada aqui é lida de volta pelo Rabbit do CryptoJS 3.x com a mesma senha. O OpenSSL não inclui Rabbit, então o openssl enc não consegue descriptografar.

A entrada é colada, não enviada: não existe seletor de arquivos nem busca por URL. Nos testes, 200 KB foram criptografados em cerca de 0,1 s no Chrome, a página não fez nenhuma requisição de rede enquanto trabalhava e o resultado permanece até a próxima execução.

Ferramentas recentes: