Criptografar executável C#

Bom dia!

Amigos, tenho uma pequena aplicação desktop que fiz em C# usando o Visual Studio Express 2010. Tá funcionando como era pra ser, mas tem um problema:
Se simplesmente editarmos o arquivo executável, boa parte do código fonte está legível, inclusive senhas e usuários.
Como posso fazer para trancar isso!?

Obrigado

Douglas

quando ninguém pode ver o código é sinal que tem coisa errada ai,

exitem métodos de ofuscar o código, mas eu não recomendo isso,

se o problema é as senhas aprenda a usar MD5 ou outro algorítimo de hash

[quote=adrianoms]quando ninguém pode ver o código é sinal que tem coisa errada ai,

exitem métodos de ofuscar o código, mas eu não recomendo isso,

se o problema é as senhas aprenda a usar MD5 ou outro algorítimo de hash[/quote]

Não tem nada erado adrianoms, é que é uma aplicação minúscula e simplesmente não quero deixar a senha visível.

Obrigado.

Olá douglasrauber,
Eu nunca user C#, mas em java eu criptografava as senhas com md5, eu acredito ser o tipo de criptografia mais segura que tem hoje, não conheço outra.

Para dar uma escondida básica, retire as informações delicadas (usuários, senhas, etc) do código-fonte, coloque em um arquivo de configuração criptografado e faça o programa ler esse arquivo na inicialização.

Eu disse escondida básica porque vai servir bem para esconder as informações de algum usuário curioso, mas não de um hacker de verdade. Uma pessoa “determinada” a quebrar sua segurança poderia fazer descompilando o programa e descobrindo a chave que ele usa para decriptografar o arquivo. O risco existe, mas não é nada ao alcance de um usuário comum… tudo depende do seu grau de exigência de segurança.

  1. MD5 não é criptografia, é um algoritmo de hash. É irreversível, mas pode ter colisões (duas senhas diferentes gerarem o mesmo hash).
  2. MD5 não é seguro, tem colisões detectadas desde 1996 e é susceptível ao ataque de Rainbow tables. Para evitar esse ataque, deve-se usar Salting e um algoritmo melhor como o SHA-1 ou SHA-256.

Leitura recomendada: https://www.owasp.org/index.php/Hashing_Java

De qualquer forma, a segurança de um programa não deveria estar mesmo nos fontes. Mas como o programa é bastante trivial, e provavelmente você só quer que um enxerido não saia mexendo onde não deve, procure pelo DotFuscator. Ele vem com o Visual.

[quote=ViniGodoy]1. MD5 não é criptografia, é um algoritmo de hash. É irreversível, mas pode ter colisões (duas senhas diferentes gerarem o mesmo hash).
2. MD5 não é seguro, tem colisões detectadas desde 1996 e é susceptível ao ataque de Rainbow tables. Para evitar esse ataque, deve-se usar Salting e um algoritmo melhor como o SHA-1 ou SHA-256.

Leitura recomendada: https://www.owasp.org/index.php/Hashing_Java

De qualquer forma, a segurança de um programa não deveria estar mesmo nos fontes. Mas como o programa é bastante trivial, e provavelmente você só quer que um enxerido não saia mexendo onde não deve, procure pelo DotFuscator. Ele vem com o Visual.[/quote]

Obrigado ViniGodoy!
Realmente, é um projeto trivial e não vai gerar nenhuma renda. Estou usando para um teste, inclusive com o Visual Studio 2010 Express, o qual não vem com o DotFuscator por ser express, de qualquer forma, usei o Eazfuscator.NET, porém, apresenta um erro ao executar.
Como o projeto é simples mesmo, vou usa-lo por uns dias e ver se atenderá a necessidade, depois preocupo-me com a senha.

Obrigado

Douglas