The answer to your question depends on the data that you are trying to protect. Data can be encrypted and decrypted, but you cannot decrypt or reverse engineer a hash, as it is a one-way process. Storing hashed values is only an option when its raw value is not needed. The obvious example is a password. You can store a hashed password value in a database table and when required to validate a user, you can compare the stored hashed password against the hashed text the user has entered. If the values match, you know they entered the correct password. Storing passwords as hashed values rather than as encrypted values is more secure because a hacker can neither read nor decrypt them.
However, the bulk of the data in your database will need to be viewed in Blowfish. A symmetric encryption algorithm uses the same key for encryption and decryption, which itself could be encrypted and stored in a secure location such as a file residing on an NTFS partition or a Windows Registry key accessible to privileged accounts only. There are third party utilities, such as DbEncrypt from Application Security Inc. (http://www.appsecinc.com/products/dbencrypt/mssql/), that provide this type of functionality. You may also want to encrypt the database itself. For example, Windows NTFS file encryption can be used to enhance access control by encrypting the actual database file.
Encrypting data can have significant performance implications on query processing in databases so you will probably only want to encrypt particularly sensitive data, and remember that you may also need to encrypt sensitive information as it is being sent to a browser over a network using digital certificates and SSL or SSH.
This was first published in August 2005