Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Kolom Terenkripsi SQL di Klausa WHERE

Cara umum adalah dengan menyimpan nilai terenkripsi dan hash satu arah dari nilai. Saat Anda mencari nilai tertentu, Anda akan mencari hash. Dengan cara ini Anda dapat melakukan kueri secara efisien, tanpa harus mendekripsi setiap baris untuk menemukan nilai yang Anda minati:

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

Secara teori, Anda dapat memiliki konflik hash sekali dalam bulan biru, agar paranoid-aman Anda menambahkan cek ganda pada kolom yang didekripsi:

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

Lihat juga Mengindeks data terenkripsi dan SQL Server 2005:mencari data terenkripsi .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pernyataan INSERT bertentangan dengan batasan FOREIGN KEY - SQL Server

  2. PI() Contoh di SQL Server

  3. Apakah memiliki 'ATAU' dalam kondisi INNER JOIN adalah ide yang buruk?

  4. Hapus pernyataan dalam SQL sangat lambat

  5. Bagaimana Fungsi PATINDEX() Bekerja di SQL Server (T-SQL)