Pertama-tama, saya setuju dengan jawaban lain yang menunjukkan bahwa jauh lebih aman untuk menghindari ini, dan hanya menyimpan hash kata sandi, bukan kata sandi itu sendiri, atau apa pun yang dapat diubah kembali menjadi kata sandi.
Namun, ada saat-saat ketika Anda lebih atau kurang perlu mengizinkan pemulihan. Dalam hal kata sandi, Anda biasanya ingin memulihkan dengan hanya mengizinkan administrator untuk mengubah kata sandi saat / jika diperlukan daripada memulihkan kata sandi yang ada.
Namun, kemungkinan lain adalah Anda memperbolehkan pengguna untuk menyimpan data di server yang dienkripsi dengan kata sandi mereka sendiri. Dalam hal ini, cukup memungkinkan administrator untuk mengubah kata sandi tidak cukup. Kata sandi baru tidak akan berfungsi untuk mendekripsi data, dan sebagian besar pengguna akan merasa tidak dapat diterima untuk semua data terenkripsi mereka menjadi tidak dapat diakses ketika / jika mereka lupa / kehilangan kata sandi. Untuk situasi ini, ada alternatif yang cukup aman, dan masih memungkinkan pemulihan ketika benar-benar dibutuhkan.
Alih-alih menggunakan kata sandi pengguna untuk mengenkripsi data, Anda membuat kunci acak untuk mengenkripsi data itu sendiri. Anda kemudian menyimpan kunci itu, di beberapa tempat: setelah dienkripsi dengan kata sandi pengguna, dan di tempat lain dienkripsi dengan kata sandi administrator. Kemudian ketika (tidak benar-benar jika) pengguna kehilangan kata sandi dan tidak dapat lagi mengakses data secara langsung, Anda dapat menggunakan kata sandi administrator untuk mendekripsi kunci nyata dan menggunakannya untuk memulihkan data dan / atau mengenkripsi ulang kunci dengan kata sandi baru pengguna.
Jika Anda tidak ingin sepenuhnya mempercayai satu administrator, Anda dapat mengelolanya juga. Misalnya, Anda dapat memutuskan bahwa 5 orang akan memiliki kunci administrator, dan Anda ingin setidaknya tiga dari mereka setuju sebelum kunci dapat dipulihkan. Dalam hal ini, ketika Anda menyimpan kata sandi terenkripsi untuk keperluan administrasi, Anda menyimpannya beberapa kali, masing-masing untuk setiap set tiga dari lima administrator (yang tidak memakan banyak ruang, karena Anda hanya menyimpan beberapa kunci , pada ~ 256 bit masing-masing, bukan beberapa salinan data). Setiap salinan tersebut dienkripsi berturut-turut dengan (hash) masing-masing kata sandi untuk ketiga administrator tersebut.
Untuk mendekripsi, Anda perlu mengidentifikasi tiga administrator yang memasukkan kata sandi mereka, dan memilih kunci terenkripsi yang tepat untuk set tiga, kemudian mendekripsi menggunakan masing-masing dari tiga kata sandi untuk akhirnya mendapatkan kunci asli. Anda kemudian dapat menggunakannya untuk memulihkan data itu sendiri, atau Anda bisa mengenkripsi ulang dengan (hash) kata sandi baru pengguna sehingga mereka masih dapat mengakses data mereka.
Ketika Anda melakukan ini, Anda benar - benar perlu menggunakan algoritma enkripsi standar, dan (dengan preferensi yang kuat) standar, yang terkenal, implementasi yang dipelajari secara menyeluruh.