Alternativa C - Devemos invocar o método encrypt, fornecendo o valor original, chave AES e IV, ou o método decrypt, com o valor criptografado, chave e IV, sempre por meio do módulo AES.
Análise da Questão
A questão aborda o uso da biblioteca CryptoJS para criptografia simétrica (algoritmo AES) em aplicativos desenvolvidos com React Native. Para responder corretamente, é necessário entender como essa biblioteca opera e diferenciar os tipos de operações de segurança (Criptografia vs. Hashing vs. Codificação).
Por que a Alternativa C é a correta?
A biblioteca CryptoJS fornece uma interface de programação (API) baseada em módulos. Para o algoritmo AES (Advanced Encryption Standard), que é um algoritmo de criptografia simétrica, o fluxo padrão é:
- Criptografia (Encrypt): O desenvolvedo deve chamar o método
encrypt disponível no módulo AES. Ele recebe como entrada o texto plano (valor original), a chave secreta e, opcionalmente, parâmetros adicionais como o vetor de inicialização (IV). - Descriptografia (Decrypt): Para recuperar a informação, utiliza-se o método
decrypt do mesmo módulo, fornecendo o texto cifrado e a mesma chave utilizada anteriormente.
A sintaxe típica na biblioteca é similar a esta:
\text{const cipherText} = \text{AES.encrypt}(\text{data}, \text{key});
\text{const plainText} = \text{AES.decrypt}(\text{cipherText}, \text{key});
A alternativa C descreve exatamente esse processo de invocação dos métodos diretos do módulo.
Por que as outras alternativas estão incorretas?
- Alternativa A: Sugere "instanciar um objeto do tipo Cipher". A API pública do CryptoJS não exige que o usuário crie instâncias manualmente de classes internas complexas; ele utiliza os métodos estáticos ou funções de conveniência (
encrypt/decrypt) diretamente. - Alternativa B: Afirma que não é possível trabalhar com AES no React Native usando CryptoJS. Isso é falso. Existem bibliotecas de polyfill (como
react-native-crypto-js) que permitem que o CryptoJS funcione perfeitamente no ambiente móvel. - Alternativa D: Menciona a classe
Base64. O Base64 é um sistema de codificação, não de criptografia. Ele transforma dados binários em texto legível, mas não garante confidencialidade (qualquer pessoa pode decodificar sem uma chave). - Alternativa E: Cita o método
digestStringAsync. Este método é utilizado para Hashing (geração de resumo digital, como SHA-256), que é uma função de mão única (não reversível), diferente da criptografia AES que permite a recuperação da informação original.
Resumo
Para utilizar o algoritmo AES com a biblioteca CryptoJS no React Native, a prática correta é acessar o módulo AES e utilizar seus métodos de encriptação e decriptação passados os dados e a chave adequada.