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.
Data yang di-hash terdiri dari konten jenis apa pun dan hash konten. Ini dapat digunakan ketika hanya perlu untuk mengonfirmasi bahwa konten pesan belum dimodifikasi sejak hash dibuat.
Saat menghasilkan pesan yang di-hash, mungkin ada beberapa algoritma hash dan beberapa jenis hash. Ilustrasi berikut menggambarkan tugas yang diperlukan untuk mengodekan pesan yang di-hash. Prosedur ini dijelaskan dalam teks yang mengikuti ilustrasi.
Untuk membuat pesan yang di-hash
- Dapatkan penunjuk ke data yang akan di-hash.
- Pilih algoritma hash yang akan digunakan.
- Letakkan data melalui fungsi hashing menggunakan algoritma hash.
- Sertakan data asli yang akan di-hash, algoritma hashing, dan hash dalam pesan yang dikodekan.
Untuk menggunakan fungsi pesan tingkat rendah untuk menyelesaikan tugas yang baru saja diuraikan, gunakan prosedur berikut.
Untuk hash dan mengodekan pesan menggunakan fungsi pesan tingkat rendah
Buat atau ambil konten yang akan di-hash.
Dapatkan penyedia kriptografi.
Menginisialisasi struktur CMSG_HASHED_ENCODE_INFO.
Panggil CryptMsgCalculateEncodedLength untuk mendapatkan ukuran BLOB pesan yang dikodekan. Alokasikan memori untuk itu.
Panggil CryptMsgOpenToEncode, meneruskan CMSG_HASHED untuk parameter dwMsgType dan sebuah pointer ke CMSG_HASHED_ENCODE_INFO untuk parameter pvMsgEncodeInfo . Sebagai hasil dari panggilan ini, Anda mendapatkan pegangan untuk pesan yang telah dibuka.
Panggil CryptMsgUpdate, mengoper handle yang diperoleh di langkah 5 dan pointer ke data yang akan dihash dan dikodekan. Fungsi ini dapat dipanggil sebanyak yang diperlukan untuk menyelesaikan proses pengodean.
Panggil CryptMsgGetParam, meneruskan handle yang diambil di langkah 5 dan jenis parameter yang sesuai untuk mengakses data yang dikodekan dan diinginkan. Misalnya, teruskan CMSG_CONTENT_PARAM untuk mendapatkan pointer ke seluruh pesan PKCS #7.
Jika hasil pengodean ini akan digunakan sebagai data dalam untuk pesan lain yang dikodekan, seperti pesan yang diselimuti, CMSG_BARE_CONTENT_PARAM harus diteruskan. Sebagai contoh dari hal ini, lihat Kode Alternatif untuk Mengodekan Pesan Terenkripsi.
Tutup pesan dengan memanggil CryptMsgClose.
Hasil dari prosedur ini adalah pesan yang dikodekan yang berisi data asli, algoritma hashing, dan hash data tersebut. Penunjuk ke pesan yang dikodekan BLOB diperoleh pada langkah 7.
Dua prosedur berikut mendekode lalu memverifikasi data yang di-hash.
Untuk mendekode data yang di-hash
- Dapatkan pointer ke BLOB yang dikodekan.
- Panggil CryptMsgOpenToDecode, meneruskan argumen yang diperlukan.
- Panggil CryptMsgUpdate satu kali, dengan meneruskan handle yang diambil di langkah 2 dan pointer ke data yang akan didekodekan. Ini menyebabkan tindakan yang sesuai diambil pada pesan, tergantung pada jenis pesan.
- Panggil CryptMsgGetParamdengan meneruskan handle yang diambil pada langkah 2 dan jenis parameter yang sesuai untuk mengakses data yang diinginkan dan telah didekodekan. Misalnya, gunakan CMSG_CONTENT_PARAM untuk mendapatkan penunjuk ke konten yang didekodekan.
Untuk memverifikasi hash
- Panggil CryptMsgControl, lewati CMSG_CTRL_VERIFY_HASH untuk memverifikasi hash.
- Panggil CryptMsgClose untuk menutup pesan.
Untuk contoh program, lihat Contoh Program C: Pengodean dan Dekode Pesan yang Di-hash.