対称キーを使用して SQL 列レベルの暗号化を適用しようとしています。データベース マスター キー、証明書、および対称キーを作成するために必要な最初の手順は単純明快であり、対称キーを使用したデータの暗号化/復号化を正常にテストしました。
ただし、データが暗号化されると、クエリを実行する最善の方法がわかりません。例えば
SELECT PlainTextA, PlainTextB, PlainTextC
WHERE CONVERT(varchar, DECRYPTBYKEY(EncyptedColumn)) = @SearchTerm
確かに完全なテーブルスキャンになりますか?
私がうまくいくかもしれないと思った別のオプションは、最初に検索条件を暗号化することです。
SELECT PlainTextA, PlainTextB, PlainTextC
WHERE EncyptedColumn = ENCRYPTBYKEY(KEY_GUID('KeyName'), @SearchTerm)
ただし、生成される暗号化された値は常に異なるため、これは機能しません。
どんな提案でも大歓迎です。