Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Zaszyfrowane kolumny SQL w klauzuli WHERE

Typowym sposobem jest przechowywanie zaszyfrowanej wartości i jednokierunkowy skrót wartości. Kiedy szukasz określonej wartości, będziesz szukał haszu. W ten sposób możesz sprawnie wysyłać zapytania, bez konieczności odszyfrowywania każdego wiersz, aby znaleźć interesującą Cię wartość:

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

Teoretycznie możesz mieć konflikt haszujący raz na niebieskim księżycu, aby być bezpiecznym w paranoi, dodaj podwójną kontrolę w odszyfrowanej kolumnie:

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

Zobacz też Indeksowanie zaszyfrowanych danych i SQL Server 2005:wyszukiwanie zaszyfrowanych danych .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server zwraca inny rekord po wstawieniu do połączonej tabeli MS Access

  2. jak wykryć przekroczenie limitu czasu serwera sql z aplikacji .NET bez użycia wyjątku catch

  3. SQL Server - Transakcje zagnieżdżone w procedurze składowanej

  4. Używanie INNER JOIN do łączenia tabel programu SQL Server i wyświetlania ich w formularzach sieci Web ASP.NET

  5. Wartość null w typie danych varbinary parametru