Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Important
Artikel ini menjelaskan enkripsi menggunakan CryptoAPI warisan. Untuk aplikasi baru, gunakan Cryptography API: Next Generation (CNG) sebagai gantinya. Untuk contoh enkripsi modern menggunakan CNG dengan AES, lihat Mengenkripsi Data dengan CNG.
Prosedur berikut menjelaskan langkah-langkah yang harus diambil untuk mengenkripsi pesan dengan Fungsi Kriptografi Dasar. Untuk mengenkripsi pesan menggunakan standar PKCS #7, lihat Fungsi Pesan Tingkat Rendah dan Fungsi Pesan Sederhana.
Untuk mengenkripsi pesan
Buat kunci sesi dengan menggunakan fungsiCryptGenKey.
Melakukan panggilan ini menghasilkan kunci acak dan mengembalikan handel sehingga kunci dapat digunakan untuk mengenkripsi dan mendekripsi data. Algoritma enkripsi yang akan digunakan juga ditentukan pada saat ini. Karena CryptoAPI tidak mengizinkan aplikasi untuk menggunakan algoritma kunci publik untuk mengenkripsi data massal, tentukan algoritma simetris seperti RC2 atau RC4 dengan panggilan CryptGenKey.
Atau, gunakan fungsiCryptDeriveKey untuk mengubah kata sandi menjadi kunci yang cocok untuk enkripsi.
Jika aplikasi perlu mengenkripsi pesan sehingga siapa pun dengan kata sandi tertentu dapat mendekripsi data, gunakan CryptDeriveKey untuk mengubah kata sandi menjadi kunci yang cocok untuk enkripsi.
Nota
Dalam hal ini, fungsi CryptGenKey dipanggil alih-alih fungsi, dan panggilan CryptExportKey berikutnya tidak diperlukan.
Jika perlu, atur properti kriptografi tambahan kunci dengan menggunakan fungsiCryptSetKeyParam
Setelah kunci dibuat, properti kriptografi tambahan kunci dapat diatur dengan fungsiCryptSetKeyParam. Fungsi ini memungkinkan berbagai bagian file dienkripsi dengan garam kunci yang berbeda dan menyediakan cara untuk mengubah mode sandi atau vektor inisialisasi kunci. Parameter ini dapat digunakan untuk membuat enkripsi sesuai dengan standar enkripsi data tertentu.
Enkripsi data dalam file dengan fungsiCryptEncrypt.
FungsiCryptEncrypt mengambil kunci sesi yang dihasilkan pada langkah sebelumnya dan mengenkripsi buffer data.
Nota
Saat data dienkripsi, data mungkin sedikit diperluas oleh algoritma enkripsi. Aplikasi ini bertanggung jawab untuk mengingat panjang data terenkripsi sehingga panjang yang tepat nantinya dapat ditentukan untuk fungsiCryptDecrypt.
Secara opsional, gunakan fungsiCryptExportKey untuk memungkinkan pengguna saat ini mendekripsi data di masa mendatang.
Untuk memungkinkan pengguna saat ini mendekripsi data di masa mendatang, fungsiCryptExportKey digunakan untuk menyimpan kunci dekripsi dalam bentuk terenkripsi (BLOB kunci) yang hanya dapat didekripsi dengan kunci privat pengguna. Fungsi ini memerlukan kunci publik pertukaran kunci pengguna untuk tujuan ini, yang dapat diperoleh dengan menggunakan fungsi CryptGetUserKey. Fungsi CryptExportKey akan mengembalikan BLOB kunci yang harus disimpan oleh aplikasi untuk digunakan dalam mendekripsi file
Nota
Jika aplikasi memiliki sertifikat (atau kunci publik) untuk pengguna lain, aplikasi dapat mengizinkan pengguna lain untuk mendekripsi file dengan melakukan panggilan CryptExportKey untuk setiap pengguna yang harus menerima akses. BLOB kunci yang dikembalikan harus disimpan oleh aplikasi, seperti pada langkah 5.
Membuat Pesan Terenkripsi
Fungsi pesan yang disederhanakan memudahkan untuk mengenkripsi dan mendekripsi data. Ilustrasi berikut menggambarkan tugas individual yang harus diselesaikan untuk mengenkripsi pesan. Langkah-langkah dijelaskan dalam daftar berikut.
Untuk mengenkripsi pesan
- Dapatkan penunjuk ke pesan teks biasa.
- Buat kunci simetris (sesi).
- Menggunakan kunci simetris dan algoritma enkripsi yang ditentukan, data pesan dienkripsi.
- Buka penyimpanan sertifikat.
- Dapatkan sertifikat penerima.
- Dapatkan kunci umum dari sertifikat penerima.
- Menggunakan kunci publik penerima, enkripsi kunci simetris.
- Ambil pengenal penerima dari sertifikat penerima.
- Sertakan yang berikut ini dalam pesan yang diselimuti secara digital: algoritma enkripsi data, data terenkripsi, kunci konten terenkripsi, dan pengidentifikasi penerima.