Angeben eines Salzwerts

Sowohl der Basisanbieter als auch der erweiterte Anbieter können den Wert und die Länge des zu verwendenden Salzwerts angeben. Der Basisanbieter legt mithilfe des KP_SALT-Parameterwerts einen Salzwert fest. Der Basisanbieter legt immer elf Bytes Salzwert fest.

Der erweiterte Anbieter legt den Salzwert fest, indem er CryptSetKeyParam mit dem angegebenen KP_SALT_EX Parameterwert und dem pbData-Parameter aufruft, der auf eine CRYPT_INTEGER_BLOB Struktur verweist, die das Salz enthält.

Hinweis

Die Gesamtlänge eines symmetrischen Schlüssels des erweiterten Anbieters und dessen Salzwert darf nicht größer als 128 Bit sein.

 

KP_SALT wird weiterhin für die Abwärtskompatibilität mit dem Basisanbieter bereitgestellt. Neuere Anwendungen sollten den KP_SALT_EX-Parameterwert verwenden.

Im folgenden Beispiel wird ein Salzwert festgelegt.

// Specify 4 bytes of salt.
BYTE rgbSalt[] = {0x01, 0x02, 0x03, 0x04};
CRYPT_DATA_BLOB sSaltData;
sSaltData.pbData = rgbSalt;
sSaltData.cbData = sizeof(rgbSalt);

// Set the 4 bytes of salt required.
// hKey is an HCRYPTPROV handle previously
// assigned, such as by CryptImportKey.
if (CryptSetKeyParam(
        hKey,    
        KP_SALT_EX,    
        (BYTE*)&sSaltData,    
        0))
{
     printf("The salt value is set.\n");
}
else
{
     printf("Setting the salt value failed.\n");
}