एन्क्रिप्टेड मान और . दोनों को स्टोर करने का सामान्य तरीका है मूल्य का एकतरफा हैश। जब आप एक विशिष्ट मूल्य की तलाश करते हैं, तो आप हैश की तलाश करेंगे। इस तरह आप कुशलता से क्वेरी कर सकते हैं, आपको हर . को डिक्रिप्ट करना होगा अपनी रुचि का मान ढूंढने के लिए पंक्ति:
create table Table (
EncryptedColumn varbinary(max),
HashValue binary(20),
PlainA int,
PlainB varchar(256),
PlainC Datetime);
create index ndxTableHash on Table(HashValue);
select PlainA, plainB, PlainC
from table
where HashValue = HashBytes('SHA1', @searchTerm);
सिद्धांत रूप में, आप एक बार नीले चंद्रमा में हैश संघर्ष कर सकते हैं, पागल-सुरक्षित होने के लिए आप डिक्रिप्ट किए गए कॉलम पर एक डबल चेक जोड़ते हैं:
select PlainA, plainB, PlainC
from table
where HashValue = HashBytes('SHA1', @searchTerm)
and DecryptByKey(..., EncryptedColumn) = @searchTerm;
यह भी देखें एन्क्रिप्टेड डेटा का अनुक्रमण और SQL Server 2005:एन्क्रिप्टेड डेटा खोजना ।