Bagikan melalui


Fungsi NCryptEncrypt (ncrypt.h)

Fungsi NCryptEncrypt mengenkripsi blok data.

Sintaks

SECURITY_STATUS NCryptEncrypt(
  [in]           NCRYPT_KEY_HANDLE hKey,
  [in]           PBYTE             pbInput,
  [in]           DWORD             cbInput,
  [in, optional] VOID              *pPaddingInfo,
  [out]          PBYTE             pbOutput,
  [in]           DWORD             cbOutput,
  [out]          DWORD             *pcbResult,
  [in]           DWORD             dwFlags
);

Parameter

[in] hKey

Handel kunci yang digunakan untuk mengenkripsi data.

[in] pbInput

Alamat buffer yang berisi data yang akan dienkripsi. Parameter cbInput berisi ukuran data untuk dienkripsi. Untuk informasi selengkapnya, lihat Keterangan.

[in] cbInput

Jumlah byte dalam buffer pbInput untuk dienkripsi.

[in, optional] pPaddingInfo

Penunjuk ke struktur yang berisi informasi padding. Jenis struktur aktual yang dituju parameter ini tergantung pada nilai parameter dwFlags . Parameter ini hanya digunakan dengan kunci asimetris dan harus NULL jika tidak.

[out] pbOutput

Alamat buffer yang akan menerima data terenkripsi yang dihasilkan oleh fungsi ini. Parameter cbOutput berisi ukuran buffer ini. Untuk informasi selengkapnya, lihat Keterangan.

Jika parameter ini NULL, fungsi ini akan menghitung ukuran yang diperlukan untuk data terenkripsi dan mengembalikan ukuran di lokasi yang diarahkan oleh parameter pcbResult .

[in] cbOutput

Ukuran, dalam byte, dari buffer pbOutput . Parameter ini diabaikan jika parameter pbOutput adalah NULL.

[out] pcbResult

Penunjuk ke variabel DWORD yang menerima jumlah byte yang disalin ke buffer pbOutput . Jika pbOutput adalah NULL, ini menerima ukuran, dalam byte, diperlukan untuk ciphertext.

[in] dwFlags

Bendera yang mengubah perilaku fungsi. Set bendera yang diizinkan tergantung pada jenis kunci yang ditentukan oleh parameter hKey .

Jika kuncinya adalah kunci asimetris, ini bisa menjadi salah satu nilai berikut.

Nilai Makna
NCRYPT_NO_PADDING_FLAG
Jangan gunakan padding apa pun. Parameter pPaddingInfo tidak digunakan.

Jika Anda menentukan NCRYPT_NO_PADDING_FLAG, maka fungsi NCryptEncrypt hanya mengenkripsi bit N pertama, di mana N adalah panjang kunci yang diteruskan sebagai parameter hKey . Bit apa pun setelah N bit pertama diabaikan.

NCRYPT_PAD_OAEP_FLAG
Gunakan skema Optimal Asymmetric Encryption Padding (OAEP). Parameter pPaddingInfo adalah penunjuk ke struktur BCRYPT_OAEP_PADDING_INFO .
NCRYPT_PAD_PKCS1_FLAG
Data akan dilapisi dengan angka acak untuk membulatkan ukuran blok. Parameter pPaddingInfo tidak digunakan.
NCRYPT_SILENT_FLAG
Meminta agar penyedia layanan utama (KSP) tidak menampilkan antarmuka pengguna apa pun. Jika penyedia harus menampilkan UI untuk beroperasi, panggilan gagal dan KSP harus mengatur kode kesalahan NTE_SILENT_CONTEXT sebagai kesalahan terakhir.

Nilai kembali

Mengembalikan kode status yang menunjukkan keberhasilan atau kegagalan fungsi.

Kemungkinan kode pengembalian termasuk, tetapi tidak terbatas pada, berikut ini.

Menampilkan kode Deskripsi
ERROR_SUCCESS
Fungsi berhasil.
NTE_BAD_FLAGS
Parameter dwFlags berisi nilai yang tidak valid.
NTE_BAD_KEY_STATE
Kunci yang diidentifikasi oleh parameter hKey belum diselesaikan atau tidak lengkap.
NTE_BUFFER_TOO_SMALL
Ukuran yang ditentukan oleh parameter cbOutput tidak cukup besar untuk menyimpan data terenkripsi.
NTE_INVALID_HANDLE
Parameter hKey tidak valid.
NTE_INVALID_PARAMETER
Satu atau beberapa parameter tidak valid.

Keterangan

Parameter pbInput dan pbOutput dapat menunjuk ke buffer yang sama. Dalam hal ini, fungsi ini akan melakukan enkripsi di tempat. Ada kemungkinan bahwa ukuran data terenkripsi akan lebih besar dari ukuran data yang tidak terenkripsi, sehingga buffer harus cukup besar untuk menyimpan data terenkripsi.

Layanan tidak boleh memanggil fungsi ini dari Fungsi StartService-nya. Jika layanan memanggil fungsi ini dari fungsi StartService-nya, kebuntuan dapat terjadi, dan layanan mungkin berhenti merespons.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows Vista [aplikasi desktop | Aplikasi UWP]
Server minimum yang didukung Windows Server 2008 [aplikasi desktop | Aplikasi UWP]
Target Platform Windows
Header ncrypt.h
Pustaka Ncrypt.lib
DLL Ncrypt.dll