Saya menggunakan penyulitan peringkat medan sisi klien MongoDB untuk menyulitkan dan menyahsulit data. Walau bagaimanapun, saya perhatikan bahawa setiap kali saya melaksanakan program, kunci binari asal berubah. Ini menyukarkan saya untuk mendapatkan semula data yang disulitkan sebelum ini kerana saya tidak boleh menyahsulitnya dengan kunci baharu.
Adakah terdapat cara untuk mengekalkan kunci penyulitan yang konsisten untuk penyulitan peringkat medan sisi klien dalam MongoDB? Jika ya, bagaimana saya boleh melakukannya?
https://www.mongodb.com/docs/manual/core/csfle/fundamentals/manual-encryption/#std-label-csfle-fundamentals-manual-encryption
https://go.dev/play/p/6W8e0OiPV2L
Saya cuba melaksanakan penyulitan peringkat medan sisi klien dalam projek komuniti MongoDB supaya medan tertentu dalam dokumen disulitkan sebelum disimpan dalam pangkalan data, dan kemudian dinyahsulit apabila mendapatkannya daripada pangkalan data.
Saya telah mengikuti dokumentasi MongoDB dan berjaya menyulitkan serta menyahsulit data pada kali pertama saya melaksanakan program ini. Walau bagaimanapun, saya perhatikan bahawa kunci berubah setiap kali saya menjalankan program sekali lagi, dan saya mahu mengekalkan kunci yang sama.
Barisan ini harus dipadamkan:
// drop the key vault collection in case you created this collection // in a previous run of this application. if err = client.database(keyvaultdb).collection(keyvaultcoll).drop(context.todo()); err != nil { log.fatalf("collection.drop error: %v", err) }
Baris berikut hanya diperlukan jika kunci belum wujud:
dataKeyID, err := clientEnc.CreateDataKey(context.TODO(), provider, dataKeyOpts) if err != nil { log.Fatalf("CreateDataKey error: %v", err) }
Mungkin hubungi clientenc.getkeybyaltname
dahulu untuk menyemak sama ada kunci itu wujud.
Dengan menyebut "kunci binari asal berubah" saya rasa anda maksudkan kunci penyulitan data (dek) berubah. Ini disebabkan oleh koleksi tempat dek disimpan dipadamkan.
Lihat Kunci dan Bilik Kebal Kunci:
Kunci induk pelanggan (cmk) ialah kunci yang anda gunakan untuk menyulitkan kunci penyulitan data anda (dek)....
Kunci penyulitan data (dek) ialah kunci yang digunakan untuk menyulitkan medan dalam dokumen mongodb. Anda menyimpan kunci penyulitan data anda dalam koleksi peti besi kunci yang disulitkan menggunakan cmk...
Jika anda memadamkan kunci penyulitan data (dek), semua medan yang disulitkan dengan dek tersebut akan menjadi tidak boleh dibaca selama-lamanya.
Jika anda mengalih keluar cmk, semua medan yang disulitkan oleh dek yang disulitkan menggunakan cmk tersebut akan menjadi tidak boleh dibaca secara kekal.
Atas ialah kandungan terperinci Bagaimana untuk mengekalkan kunci penyulitan yang konsisten dalam penyulitan peringkat medan klien MongoDB?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!