Manage Learn to apply best practices and optimize your operations.

Storing hashed, encrypted values in a database

Expert advice on storing hashed and encrypted values in a database.

Which is better, storing hashed or encrypted values in a database?

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 last published in August 2005

Dig Deeper on Database Security Management-Enterprise Data Protection