Criptografia com a cifra de fluxo Rabbit

Criptografe texto com a cifra de fluxo Rabbit (RFC 4503, eSTREAM) usando uma senha no formato do CryptoJS ou uma chave hex de 128 bits e IV de 64 bits. Roda localmente.

Rabbit é uma cifra de fluxo pouco usada, sem proteção de integridade e com pouco suporte em bibliotecas. Prefira AES-GCM em aplicações novas.

A saída usa o formato "Salted__" do OpenSSL em Base64, com chave e IV derivados da senha – o mesmo formato de CryptoJS.Rabbit.encrypt(text, passphrase). O OpenSSL não possui a cifra Rabbit.

Executa totalmente no seu navegador. Seus dados nunca são enviados.

O que é Criptografia Rabbit?

Criptografa dados com o Rabbit, uma cifra de fluxo rápida de 128 bits do portfólio eSTREAM (RFC 4503). Ela aparece principalmente em projetos JavaScript que usam CryptoJS.Rabbit, e esta ferramenta produz saída compatível com ele.

Como usar Criptografia Rabbit

  1. Escolha Senha (compatível com OpenSSL) e digite uma senha, ou Chave + IV brutos (hex) com uma chave de 16 bytes e um IV opcional de 8 bytes.
  2. Digite ou cole o Texto puro.
  3. Clique em Criptografar, escolha saída Base64 ou Hex e copie o resultado.

Exemplo

Entrada
Raw key 000102030405060708090a0b0c0d0e0f, IV 0001020304050607, plaintext "Rabbit stream", Hex output
Saída
a0e87bbfc85cd88a7e42510ffa

Mesmo resultado do CryptoJS.Rabbit com a mesma chave e o mesmo IV.

Quando usar Criptografia Rabbit

Use-a para interoperar com uma aplicação que usa o Rabbit do CryptoJS ou para testar esse tipo de código. Para novos projetos, escolha AES-GCM ou ChaCha20-Poly1305, que são padronizados e autenticados.

Como funciona Criptografia Rabbit

O Rabbit mantém 513 bits de estado interno (oito palavras de estado de 32 bits, oito contadores e um bit de transporte) e gera 128 bits de fluxo de chave por iteração, que são combinados com os dados por XOR. A chave tem 128 bits; um IV opcional de 64 bits torna o fluxo de chave de cada mensagem único. O modo senha deriva a chave e o IV da senha e de um salt aleatório com EVP_BytesToKey (MD5) ou PBKDF2-SHA256 e gera dados Salted__ em Base64 – idênticos a CryptoJS.Rabbit.encrypt(text, passphrase) com a opção MD5. Chaves hex brutas são lidas na ordem do fluxo de bytes, como faz o CryptoJS; a RFC 4503 imprime seus vetores de teste como números big-endian, ou seja, com cada bloco de 16 bytes invertido.

Casos de Uso Comuns

  • Reproduzir a saída de CryptoJS.Rabbit.encrypt para depuração
  • Criar dados de teste para um app JavaScript que usa Rabbit
  • Comparar o comportamento de cifras de fluxo com o RC4
  • Conferir vetores de fluxo de chave da RFC 4503

Nota de Segurança

O Rabbit não tem nenhuma quebra prática conhecida, mas é pouco usado, não tem proteção de integridade embutida e poucas bibliotecas o suportam. Use AES-GCM em sistemas novos.

Perguntas Frequentes

É compatível com o CryptoJS?

Sim. O modo senha com EVP_BytesToKey (MD5) corresponde a CryptoJS.Rabbit.encrypt(text, "passphrase"), e o modo bruto corresponde ao CryptoJS com chave e IV explícitos como WordArrays.

O OpenSSL consegue descriptografar Rabbit?

Não, o OpenSSL não implementa o Rabbit. Apenas o formato de contêiner (Salted__ + salt) é o mesmo.

Preciso de um IV?

Ele é opcional no Rabbit, mas sem IV a mesma chave sempre gera o mesmo fluxo de chave. O modo senha sempre deriva um IV novo a partir do salt aleatório.

Explore mais categorias