Fungsi CryptDecrypt (wincrypt.h)
Perubahan penting untuk mendukung interoperabilitas email Ekstensi Surat Internet Aman/Multiguna (S/MIME) telah dilakukan ke CryptoAPI yang memengaruhi penanganan pesan yang diselimuti. Untuk informasi selengkapnya, lihat bagian Keterangan CryptMsgOpenToEncode.
Sintaksis
BOOL CryptDecrypt(
[in] HCRYPTKEY hKey,
[in] HCRYPTHASH hHash,
[in] BOOL Final,
[in] DWORD dwFlags,
[in, out] BYTE *pbData,
[in, out] DWORD *pdwDataLen
);
Parameter
[in] hKey
Handel ke kunci yang akan digunakan untuk dekripsi. Aplikasi mendapatkan handel ini dengan menggunakan fungsi
Kunci ini menentukan algoritma dekripsi yang akan digunakan.
[in] hHash
Handel ke objek hash . Jika data akan didekripsi dan di-hash secara bersamaan, handel ke objek hash diteruskan dalam parameter ini. Nilai hash diperbarui dengan plaintext yang didekripsi. Opsi ini berguna saat mendekripsi dan memverifikasi tanda tangan secara bersamaan.
Sebelum memanggil
Jika tidak ada hash yang harus dilakukan, parameter ini harus nol.
[in] Final
Nilai Boolean yang menentukan apakah ini adalah bagian terakhir dalam seri yang didekripsi. Nilai ini TRUE jika ini adalah blok terakhir atau satu-satunya. Jika ini bukan blok terakhir, nilai ini FALSE. Untuk informasi selengkapnya, lihat Keterangan.
[in] dwFlags
Nilai bendera berikut ditentukan.
[in, out] pbData
Penunjuk ke buffer yang berisi data yang akan didekripsi. Setelah dekripsi dilakukan, teks biasa ditempatkan kembali ke buffer yang sama ini.
Jumlah byte terenkripsi dalam buffer ini ditentukan oleh pdwDataLen.
[in, out] pdwDataLen
Penunjuk ke nilai DWORD
Ketika sandi blok
Mengembalikan nilai
Jika fungsi berhasil, fungsi mengembalikan nonzero (TRUE).
Jika fungsi gagal, fungsi akan mengembalikan nol (FALSE). Untuk informasi kesalahan yang diperluas, panggil GetLastError.
Kode kesalahan yang diawali oleh NTE dihasilkan oleh CSP tertentu yang digunakan. Beberapa kemungkinan kode kesalahan mengikuti.
Komentar
Jika sejumlah besar data harus didekripsi, data dapat dilakukan di bagian dengan memanggil CryptDecrypt berulang kali. Parameter
- Jika kunci adalah kunci cipher blok, data diisi ke kelipatan ukuran blok cipher. Untuk menemukan ukuran blok cipher, gunakan CryptGetKeyParam untuk mendapatkan nilai KP_BLOCKLEN kunci.
- Jika sandi beroperasi dalam mode penautan
, operasi CryptDecrypt berikutnya mengatur ulang daftar umpan balik cipher ke nilai KP_IV kunci. - Jika cipher adalah cipher streaming
, panggilan CryptDecrypt berikutnya mengatur ulang cipher ke status awal .
Tidak ada cara untuk mengatur daftar umpan balik cipher ke nilai KP_IV kunci tanpa mengatur parameter Akhir
// Set the IV for the original key. Do not use the original key for
// encryption or decryption after doing this because the key's
// feedback register will get modified and you cannot change it.
CryptSetKeyParam(hOriginalKey, KP_IV, newIV)
while(block = NextBlock())
{
// Create a duplicate of the original key. This causes the
// original key's IV to be copied into the duplicate key's
// feedback register.
hDuplicateKey = CryptDuplicateKey(hOriginalKey)
// Decrypt the block with the duplicate key.
CryptDecrypt(hDuplicateKey, block)
// Destroy the duplicate key. Its feedback register has been
// modified by the CryptEncrypt function, so it cannot be used
// again. It will be re-duplicated in the next iteration of the
// loop.
CryptDestroyKey(hDuplicateKey)
}
Penyedia Kriptografi yang Ditingkatkan Microsoft
Contoh
Untuk contoh yang menggunakan fungsi ini, lihat Contoh Program C: Mendekripsi File.
Persyaratan
Syarat | Nilai |
---|---|
klien minimum yang didukung | Windows XP [hanya aplikasi desktop] |
server minimum yang didukung |
Windows Server 2003 [hanya aplikasi desktop] |
Platform Target |
Windows |
Header |
wincrypt.h |
Pustaka |
Advapi32.lib |
DLL |
Advapi32.dll |
Lihat juga
Fungsi Enkripsi/Dekripsi Data