Let me add one more point here -- one should be extra-careful if using algorithms that are more sensitive to bad randomness. For example, DSS is a bad choice when you don't have a good random number source -- if an enemy can guess the random value k used in creating a signature, he or she can recover your secret key.