Freigeben über


BCRYPT_RSAKEY_BLOB-Struktur (bcrypt.h)

Die BCRYPT_RSAKEY_BLOB-Struktur wird als Header für einen öffentlichen RSA-Schlüssel oder ein BLOB mit privatem Schlüssel im Arbeitsspeicher verwendet.

Syntax

typedef struct _BCRYPT_RSAKEY_BLOB {
  ULONG Magic;
  ULONG BitLength;
  ULONG cbPublicExp;
  ULONG cbModulus;
  ULONG cbPrime1;
  ULONG cbPrime2;
} BCRYPT_RSAKEY_BLOB;

Member

Magic

Gibt den Typ des RSA-Schlüssels an, den dieser BLOB darstellt. Dies kann einer der folgenden Werte sein.

Wert Bedeutung
BCRYPT_RSAPUBLIC_MAGIC
Der Schlüssel ist ein öffentlicher RSA-Schlüssel.
BCRYPT_RSAPRIVATE_MAGIC
Der Schlüssel ist ein privater RSA-Schlüssel.
BCRYPT_RSAFULLPRIVATE_MAGIC
Der Schlüssel ist ein vollständiger privater RSA-Schlüssel.

BitLength

Die Größe des Schlüssels in Bits.

cbPublicExp

Die Größe des Exponenten des Schlüssels in Bytes. Ab Windows 10 Version 1903 werden öffentliche Exponenten, die größer als (2^64 - 1) sind, nicht mehr unterstützt.

cbModulus

Die Größe des Modulus des Schlüssels in Bytes.

cbPrime1

Die Größe der ersten Primzahl des Schlüssels in Byte. Dies wird nur für BLOBs mit privatem Schlüssel verwendet.

cbPrime2

Die Größe der zweiten Primzahl des Schlüssels in Byte. Dies wird nur für BLOBs mit privatem Schlüssel verwendet.

Hinweise

Diese Struktur wird als Header für einen größeren Puffer verwendet. Ein RSA-BLOB mit öffentlichem Schlüssel (BCRYPT_RSAPUBLIC_BLOB) hat das folgende Format im zusammenhängenden Arbeitsspeicher. Alle Zahlen, die der Struktur folgen, sind im Big-Endian-Format.


BCRYPT_RSAKEY_BLOB
PublicExponent[cbPublicExp] // Big-endian.
Modulus[cbModulus] // Big-endian.

Ein RSA-Blob mit privatem Schlüssel (BCRYPT_RSAPRIVATE_BLOB) hat das folgende Format im zusammenhängenden Arbeitsspeicher. Alle Zahlen, die der Struktur folgen, sind im Big-Endian-Format.


BCRYPT_RSAKEY_BLOB
PublicExponent[cbPublicExp] // Big-endian.
Modulus[cbModulus] // Big-endian.
Prime1[cbPrime1] // Big-endian.
Prime2[cbPrime2] // Big-endian.

Ein vollständiges RSA-Blob mit privatem Schlüssel (BCRYPT_RSAFULLPRIVATE_BLOB) hat das folgende Format im zusammenhängenden Arbeitsspeicher. Alle Zahlen, die der Struktur folgen, sind im Big-Endian-Format.

Beachten Sie, dass in verschiedenen Versionen von Windows der Wert, den PrivateExponent aus einem Aufruf von BCryptExportKey übernimmt, unterschiedlich sein kann, da es mehrere mathematisch gleichwertige Darstellungen des PrivateExponent in cbModulus-Bytes gibt. Insbesondere in einigen Versionen wird die PrivateExponent modulo (Prime1 - 1) * (Prime2 - 1) exportiert, und in anderen wird es exportiert modulo LeastCommonMultiple(Prime1 - 1, Prime2 - 1).


BCRYPT_RSAKEY_BLOB
PublicExponent[cbPublicExp] // Big-endian.
Modulus[cbModulus] // Big-endian.
Prime1[cbPrime1] // Big-endian.
Prime2[cbPrime2] // Big-endian.
Exponent1[cbPrime1] // Big-endian.
Exponent2[cbPrime2] // Big-endian.
Coefficient[cbPrime1] // Big-endian.
PrivateExponent[cbModulus] // Big-endian.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 [nur Desktop-Apps]
Kopfzeile bcrypt.h

Weitere Informationen

BCRYPT_KEY_BLOB

BCryptExportKey

BCryptImportKey