Salting (adding random data before hashing) prevents dictionary and rainbow table attacks by ensuring identical passwords produce different hashes. Hashing twice (A) adds negligible security. Private key encryption (B) isn't applicable to password storage. Custom encryption (C) violates Kerckhoffs's principle and is rarely secure.