Dizer que um software é seguro porque usa criptografia é mais ou menos dizer que um carro é seguro porque usa pneus radiais.
Os pneus radiais com certeza são melhores que os antigos “diagonais”, mas a segurança de um carro tem muitos outros aspectos. Na verdade, se usarmos o pneu radial errado estaremos deixando o carro menos seguro do que com o pneu diagonal correto.
Com criptografia é o mesmo: simplesmente ter criptografia não quer dizer muita coisa. Mesmo bem feita, ele pode não proteger nada. Por exemplo, você pode encriptar os dados com um excelente algoritmo, mas se a chave estiver em um arquivo texto de fácil acesso, a criptografia não ajudou muito.
Outro perigo é inventar a própria criptografia. Não faça isso; boa criptografia é extremamente difícil de fazer.
Use rotinas prontas para isso. Por exemplo, no .NET Framework existe bastante coisa de boa qualidade no namespace “System.Security.Cryptography”.
Estas questões de criptografia também valem para a criação de números aleatórios como em senhas temporárias. Jamais use a classe “System.Random” para nada sério, use a classe “System.Security.Cryptography.RandomNumberGenerator”.