Bagikan melalui


Pengodean dan Pendekodean Pesan Hash

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 membuat pesan hash, mungkin ada beberapa algoritma hash dan beberapa hash. Ilustrasi berikut menggambarkan tugas yang diperlukan untuk mengodekan pesan yang di-hash. Prosedur ini dijelaskan dalam teks yang mengikuti ilustrasi.

membuat pesan hash

Untuk membuat pesan yang di-hash

  1. Dapatkan penunjuk ke data yang akan di-hash.
  2. Pilih algoritma hash yang akan digunakan.
  3. Letakkan data melalui fungsi hashing menggunakan algoritma hash.
  4. 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 melakukan hash dan mengodekan pesan menggunakan fungsi pesan tingkat rendah

  1. Buat atau ambil konten yang akan di-hash.

  2. Dapatkan penyedia kriptografi.

  3. Menginisialisasi struktur CMSG_HASHED_ENCODE_INFO .

  4. Panggil CryptMsgCalculateEncodedLength untuk mendapatkan ukuran BLOB pesan yang dikodekan. Alokasikan memori untuk itu.

  5. Panggil CryptMsgOpenToEncode, meneruskan CMSG_HASHED untuk parameter dwMsgType dan penunjuk ke CMSG_HASHED_ENCODE_INFO untuk parameter pvMsgEncodeInfo . Sebagai hasil dari panggilan ini, Anda mendapatkan handel ke pesan yang dibuka.

  6. Panggil CryptMsgUpdate, meneruskan handel yang diambil di langkah 5 dan penunjuk ke data yang akan di-hash dan dikodekan. Fungsi ini dapat dipanggil sebanyak yang diperlukan untuk menyelesaikan proses pengodean.

  7. Panggil CryptMsgGetParam, meneruskan handel yang diambil di langkah 5 dan jenis parameter yang sesuai untuk mengakses data yang diinginkan dan dikodekan. 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. Untuk contoh yang menunjukkan ini, lihat Kode Alternatif untuk Mengodekan Pesan Yang Diselimuti.

  8. Tutup pesan dengan memanggil CryptMsgClose.

Hasil dari prosedur ini adalah pesan yang dikodekan yang berisi data asli, algoritma hash, dan hash data tersebut. Penunjuk ke BLOB pesan yang dikodekan diperoleh pada langkah 7.

Dua prosedur berikut mendekode lalu memverifikasi data yang di-hash.

Untuk mendekode data yang di-hash

  1. Dapatkan pointer ke BLOB yang dikodekan.
  2. Panggil CryptMsgOpenToDecode, melewati argumen yang diperlukan.
  3. Panggil CryptMsgUpdate sekali, meneruskan handel yang diambil di langkah 2 dan penunjuk ke data yang akan didekode. Ini menyebabkan tindakan yang sesuai diambil pada pesan, tergantung pada jenis pesan.
  4. Panggil CryptMsgGetParam, meneruskan handel yang diambil di langkah 2, dan jenis parameter yang sesuai untuk mengakses data yang diinginkan dan didekodekan. Misalnya, teruskan CMSG_CONTENT_PARAM untuk mendapatkan penunjuk ke konten yang didekodekan.

Untuk memverifikasi hash

  1. Panggil CryptMsgControl, lewati CMSG_CTRL_VERIFY_HASH untuk memverifikasi hash.
  2. Panggil CryptMsgClose untuk menutup pesan.

Untuk contoh program, lihat Contoh Program C: Pengodean dan Pendekodean Pesan yang Di-hash.