Jelas mereka tidak dimaksudkan untuk dilihat, oleh karena itu mencari mereka akan bermasalah.
Salah satu trik yang saya gunakan di masa lalu adalah dengan hash data terenkripsi sebelum mengenkripsi itu, dan menyimpan hash di kolom yang diindeks. Tentu saja, ini hanya berfungsi jika Anda mencari seluruh nilai; nilai parsial tidak akan memiliki hash yang sama.
Anda mungkin bisa memperpanjang ini dengan membuat indeks hash "teks lengkap", jika perlu, tetapi bisa menjadi rumit dengan sangat cepat.
TAMBAHAN
Disarankan agar saya menambahkan catatan kaki pada jawaban saya per debat yang cukup panjang dalam obrolan tentang kerentanan terhadap serangan kamus, jadi saya akan membahas risiko keamanan potensial ini dengan pendekatan di atas.
Serangan Kamus: Serangan kamus adalah ketika seseorang melakukan pra-hash daftar nilai yang diketahui, dan membandingkan hash dengan kolom hash Anda dalam database. Jika mereka dapat menemukan kecocokan, kemungkinan bahwa nilai yang diketahui sebenarnya adalah apa yang hash (meskipun tidak pasti, karena hash tidak dijamin unik). Ini biasanya dimitigasi dengan hashing nilai dengan "garam" acak ditambahkan atau didahului sehingga hash tidak akan cocok dengan kamus, tetapi jawaban di atas tidak dapat menggunakan garam karena Anda kehilangan pencarian.
Serangan ini berbahaya ketika berurusan dengan hal-hal seperti kata sandi: jika Anda membuat kamus hash kata sandi populer, Anda kemudian dapat dengan cepat mencari nilai hash dan mengidentifikasi pengguna yang memiliki kata sandi seperti itu dan secara efektif mengekstraksi kredensial untuk mencuri identitas pengguna itu. .
Itu tidak terlalu berbahaya untuk barang-barang dengan tingkat kardinalitas tinggi, seperti SSN, nomor kartu kredit, GUID, dll. (Tetapi ada risiko berbeda [baca: legal] terkait dengan menyimpannya, jadi saya tidak cenderung menyarankan untuk menyimpannya) ).
Alasannya adalah agar serangan kamus berfungsi, Anda harus membuat kamus yang berisi nilai-nilai yang mungkin dan hash-nya. Secara teori, Anda dapat membuat kamus dari semua SSN yang mungkin (satu miliar baris, dengan asumsi semua permutasi pemformatan dihapus; beberapa lusin trilyunan entri untuk kartu kredit) ... tetapi itu biasanya bukan titik serangan kamus, dan pada dasarnya menjadi sebanding dengan serangan brute-force di mana Anda secara sistematis menyelidiki setiap nilai.
Anda juga dapat mencari SSN atau nomor kartu kredit tertentu , jika Anda mencoba mencocokkan SSN dengan seseorang. Sekali lagi, biasanya bukan titik serangan kamus, tetapi mungkin dilakukan, jadi jika ini adalah risiko yang perlu Anda hindari, jawaban saya bukanlah solusi yang baik untuk Anda.
Jadi begitulah. Seperti semua data terenkripsi, biasanya dienkripsi karena suatu alasan, jadi waspadai data Anda dan apa yang Anda coba lindungi.