NCryptEncrypt-Funktion (ncrypt.h)

Die NCryptEncrypt-Funktion verschlüsselt einen Datenblock.

Syntax

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

Das Handle des Schlüssels, der zum Verschlüsseln der Daten verwendet werden soll.

[in] pbInput

Die Adresse eines Puffers, der die zu verschlüsselnden Daten enthält. Der cbInput-Parameter enthält die Größe der zu verschlüsselnden Daten. Weitere Informationen finden Sie in den Hinweisen.

[in] cbInput

Die Anzahl der zu verschlüsselnden Bytes im pbInput-Puffer .

[in, optional] pPaddingInfo

Ein Zeiger auf eine Struktur, die Abstandsinformationen enthält. Der tatsächliche Strukturtyp, auf den dieser Parameter verweist, hängt vom Wert des dwFlags-Parameters ab. Dieser Parameter wird nur mit asymmetrischen Schlüsseln verwendet und muss andernfalls NULL sein.

[out] pbOutput

Die Adresse eines Puffers, der die von dieser Funktion erzeugten verschlüsselten Daten empfängt. Der cbOutput-Parameter enthält die Größe dieses Puffers. Weitere Informationen finden Sie in den Hinweisen.

Wenn dieser Parameter NULL ist, berechnet diese Funktion die für die verschlüsselten Daten erforderliche Größe und gibt die Größe an der Position zurück, auf die der pcbResult-Parameter verweist.

[in] cbOutput

Die Größe des pbOutput-Puffers in Bytes. Dieser Parameter wird ignoriert, wenn der pbOutput-ParameterNULL ist.

[out] pcbResult

Ein Zeiger auf eine DWORD-Variable , die die Anzahl der Bytes empfängt, die in den pbOutput-Puffer kopiert wurden. Wenn pbOutputNULL ist, erhält dieser die größe in Bytes, die für den Verschlüsselungstext erforderlich ist.

[in] dwFlags

Flags, die das Funktionsverhalten ändern. Der zulässige Satz von Flags hängt vom Typ des Schlüssels ab, der durch den hKey-Parameter angegeben wird.

Wenn der Schlüssel ein asymmetrischer Schlüssel ist, kann dies einer der folgenden Werte sein.

Wert Bedeutung
NCRYPT_NO_PADDING_FLAG
Verwenden Sie keinen Abstand. Der Parameter pPaddingInfo wird nicht verwendet.

Wenn Sie die NCRYPT_NO_PADDING_FLAG angeben, verschlüsselt die NCryptEncrypt-Funktion nur die ersten N Bits, wobei N die Länge des Schlüssels ist, der als hKey-Parameter übergeben wurde. Alle Bits nach den ersten N-Bits werden ignoriert.

NCRYPT_PAD_OAEP_FLAG
Verwenden Sie das OAEP-Schema (Optimal Asymmetric Encryption Padding). Der pPaddingInfo-Parameter ist ein Zeiger auf eine BCRYPT_OAEP_PADDING_INFO-Struktur .
NCRYPT_PAD_PKCS1_FLAG
Die Daten werden mit einer Zufallszahl aufgefüllt, um die Blockgröße abzurunden. Der Parameter pPaddingInfo wird nicht verwendet.
NCRYPT_SILENT_FLAG
Fordert an, dass der Schlüsseldienstanbieter (Key Service Provider, KSP) keine Benutzeroberfläche anzeigt. Wenn der Anbieter die Benutzeroberfläche für den Betrieb anzeigen muss, schlägt der Aufruf fehl, und der KSP sollte den NTE_SILENT_CONTEXT Fehlercode als letzten Fehler festlegen.

Rückgabewert

Gibt einen status Code zurück, der den Erfolg oder Fehler der Funktion angibt.

Mögliche Rückgabecodes sind u. a. die folgenden:

Rückgabecode Beschreibung
ERROR_SUCCESS
Die Funktion war erfolgreich.
NTE_BAD_FLAGS
Der dwFlags-Parameter enthält einen ungültigen Wert.
NTE_BAD_KEY_STATE
Der durch den hKey-Parameter identifizierte Schlüssel wurde nicht abgeschlossen oder ist unvollständig.
NTE_BUFFER_TOO_SMALL
Die vom cbOutput-Parameter angegebene Größe ist nicht groß genug, um die verschlüsselten Daten aufzunehmen.
NTE_INVALID_HANDLE
Der hKey-Parameter ist ungültig.
NTE_INVALID_PARAMETER
Mindestens ein Parameter ist ungültig.

Hinweise

Die Parameter pbInput und pbOutput können auf denselben Puffer verweisen. In diesem Fall führt diese Funktion die verschlüsselungsseitig aus. Es ist möglich, dass die verschlüsselte Datengröße größer als die unverschlüsselte Datengröße ist, sodass der Puffer groß genug sein muss, um die verschlüsselten Daten aufzunehmen.

Ein Dienst darf diese Funktion nicht über seine StartService-Funktion aufrufen. Wenn ein Dienst diese Funktion über seine StartService-Funktion aufruft, kann ein Deadlock auftreten, und der Dienst reagiert möglicherweise nicht mehr.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile ncrypt.h
Bibliothek Ncrypt.lib
DLL Ncrypt.dll