Bagaimana untuk mengekalkan kunci penyulitan yang konsisten dalam penyulitan peringkat medan klien MongoDB?

王林
Lepaskan: 2024-02-06 09:00:13
ke hadapan
492 orang telah melayarinya

Bagaimana untuk mengekalkan kunci penyulitan yang konsisten dalam penyulitan peringkat medan klien MongoDB?

Kandungan soalan

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.


Jawapan Betul


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)
}
Salin selepas log masuk

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)
}
Salin selepas log masuk

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!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!