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.
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
- 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.
- Digite ou cole o Texto puro.
- Clique em Criptografar, escolha saída Base64 ou Hex e copie o resultado.
Exemplo
Raw key 000102030405060708090a0b0c0d0e0f, IV 0001020304050607, plaintext "Rabbit stream", Hex output
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.encryptpara 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.