sql >> データベース >  >> RDS >> Sqlserver

WHERE 句の SQL 暗号化列

    典型的な方法は、暗号化された値 の両方を保存することです 値の一方向ハッシュ。特定の値を探すときは、ハッシュを探します。このようにして、すべてを復号化することなく、効率的にクエリを実行できます 興味のある値を見つけるために、行:

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

    理論的には、ブルー ムーンに 1 回ハッシュの競合が発生する可能性があります。パラノイアの安全を確保するために、復号化された列にダブル チェックを追加します。

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

    暗号化されたデータのインデックス作成 もご覧ください。 および SQL Server 2005:暗号化されたデータの検索 .



    1. PHPウェブサイトの国際化

    2. Postgresのキャッシュ/バッファを表示してクリアしますか?

    3. yiiの配列にSQLクエリを配置する方法

    4. querydslでlistaggを使用する方法は?