Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Các cột được mã hóa SQL trong Mệnh đề WHERE

Cách thông thường là lưu trữ cả giá trị được mã hóa hàm băm một chiều của giá trị. Khi bạn tìm kiếm một giá trị cụ thể, bạn sẽ tìm kiếm hàm băm. Bằng cách này, bạn có thể truy vấn hiệu quả, không cần phải giải mã mọi hàng để tìm giá trị bạn quan tâm:

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);

Về lý thuyết, bạn có thể xảy ra xung đột băm một lần trong một lần trăng xanh, để an toàn cho người hoang tưởng, bạn hãy thêm kiểm tra kỹ vào cột được giải mã:

select PlainA, plainB, PlainC
from table
where HashValue = HashBytes('SHA1', @searchTerm)
and DecryptByKey(..., EncryptedColumn) = @searchTerm;

Cũng xem Lập chỉ mục dữ liệu được mã hóa SQL Server 2005:tìm kiếm dữ liệu được mã hóa .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PDO DBLIB truy cập SQL Server 2008 và 2012

  2. Chèn trình kích hoạt Cập nhật cách xác định xem chèn hoặc cập nhật

  3. So sánh hai hàng và xác định các cột có giá trị khác nhau

  4. Làm thế nào để sửa lỗi Microsoft SQL Server Error 926? - Đã giải quyết

  5. Hiệu suất máy chủ SQL - Kiểm tra trong đám mây