Técnicas de ofuscação de código são úteis para proteger a  implementação do código-fonte contra agentes  mal-intencionados. Isso é especialmente importante quando,  por exemplo, deseja-se dificultar o acesso ao código  Javascript que é transmitido para o lado cliente de uma  aplicação web ou quando se deseja proteger aplicações  executadas por interpretadores chamados máquinas virtuais.  Acerca dos conceitos relativos às técnicas de proteção do  código fonte, assinale a alternativa correta.
						
						-                              A.                                                  A ofuscação de código baseada em deslocamento de  bits pode ser interpretada pelo interpretador ou  compilador da linguagem de programação utilizada,  sem prejuízo às respectivas funcionalidades.
 -                              B.                                                  A criptografia e ofuscação de código é uma técnica  aplicada após a compilação do programa,  modificando o binário original, com o objetivo de  protegê-lo de técnicas de cracking. Assim, apesar de  impedir a engenharia reversa com o alto nível de  proteção, a técnica tem custo muito elevado e é  pouco aplicada.
 -                              C.                                                  A criptografia e ofuscação de código é uma técnica  aplicada após a compilação do programa,  modificando o binário original, com o objetivo de  protegê-lo de técnicas de cracking. Assim, apesar de  impedir a engenharia reversa com o alto nível de  proteção, a técnica tem custo muito elevado e é  pouco aplicada.
 -                              D.                                                  Realizar a ofuscação do código geralmente tem um  custo associado. Isso pode manifestar-se na forma de  código maior, tempos de execução mais lentos ou  consumo aumentado de memória em tempo de  execução.
 -                              E.                                                  Técnicas de criptografia de código que utilizam  chaves elípticas assimétricas são altamente  sofisticadas e realizam uma proteção completa do  código das aplicações, mas dependem de trocas de  chaves constantes em pontos remotos para que o  carregador da aplicação funcione corretamente. É  muito utilizada em jogos on-line.