在 Bcrypt.h 头文件中,BCRYPT_MULTI_OPERATION_TYPE 枚举定义了多操作对象的类型。以下是该枚举的定义:typedef enum _BCRYPT_MULTI_OPERATION_TYPE { BCRYPT_OPERATION_TYPE_HASH, BCRYPT_OPERATION_TYPE_CIPHER, BCRYPT_OPERATION_TYPE_ASYMMETRIC_ENCRYPTION, BCRYPT_OPERATION_TYPE_SECRET_AGREEMENT, BCRYPT_OPERATION_TYPE_SIGNATURE} BCRYPT_MULTI_OPERATION_TYPE;这个枚举包含了以下几个成员: BCRYPT_OPERATION_TYPE_HASH: 表示多操作对象是用于哈希操作。 BCRYPT_OPERATION_TYPE_CIPHER: 表示多操作对象是用于对称加密操作。 BCRYPT_OPERATION_TYPE_ASYMMETRIC_ENCRYPTION: 表示多操作对象是用于非对称加密操作。 BCRYPT_O...
在 Bcrypt.h 头文件中,BCRYPT_HASH_OPERATION_TYPE 枚举定义了哈希操作的类型。以下是该枚举的定义:typedef enum _BCRYPT_HASH_OPERATION_TYPE { BCRYPT_HASH_OPERATION_HASH_DATA, BCRYPT_HASH_OPERATION_FINISH_HASH, BCRYPT_HASH_OPERATION_RESET_HASH} BCRYPT_HASH_OPERATION_TYPE;这个枚举包含以下几个成员: BCRYPT_HASH_OPERATION_HASH_DATA: 表示哈希操作是对输入数据进行哈希计算。 BCRYPT_HASH_OPERATION_FINISH_HASH: 表示哈希操作是完成哈希计算。 BCRYPT_HASH_OPERATION_RESET_HASH: 表示哈希操作是重置哈希计算的状态,使其返回到初始状态。这些枚举成员主要用于在使用 Windows Cryptography API 时指定哈希操作的类型。例如,你可以在调用 BCryptHashData 函数时使用 ...
在 Win32 API 中,CRYPT_PROVIDER_REF 结构体实际上是在 Bcrypt.h 头文件中定义的,而不是在 WinCrypt.h 头文件中。可能存在一些误导。在 Bcrypt.h 头文件中,CRYPT_PROVIDER_REF 结构体定义如下:typedef struct _CRYPT_PROVIDER_REF { ULONG cbStruct; GUID guidProvider; ULONG cProviderRef; LPWSTR *rgProviderRef;} CRYPT_PROVIDER_REF, *PCRYPT_PROVIDER_REF;这个结构体的成员含义如下: cbStruct: 结构体的大小,以字节为单位。 guidProvider: 与提供者相关的 GUID。 cProviderRef: 与提供者关联的提供者引用的数量。 rgProviderRef: 包含提供者引用的数组,每个引用是一个字符串指针。这个结构体主要用于提供者引用的管理,提供者引用是一种用于标识和检索加密算法提供者的机制。通过这个结构体,可以获取与某个加密算法提供者...
BCryptBufferDesc 结构是 Windows Cryptography API (CNG) 中的一个结构体,用于描述一组缓冲区及其属性。以下是 BCryptBufferDesc 结构的定义:typedef struct _BCryptBufferDesc { ULONG ulVersion; ULONG cBuffers; PBCryptBuffer pBuffers;} BCRYPT_BUFFER_DESC, *PBCRYPT_BUFFER_DESC;结构中的字段含义如下: ulVersion: 结构的版本号,目前为 BCRYPTBUFFER_VERSION。 cBuffers: 缓冲区数组中的缓冲区数量。 pBuffers: 指向 BCryptBuffer 数组的指针,每个元素描述一个缓冲区及其属性。BCryptBuffer 结构用于描述单个缓冲区,其定义如下:typedef struct _BCryptBuffer { ULONG cbBuffer; ULONG BufferType; PVOID pvBuffer;} BCRYPT_BUFFER, *PB...
BCryptBuffer 结构是 Windows Cryptography API (CNG) 中的一个结构体,通常用于在函数调用中传递缓冲区参数。以下是 BCryptBuffer 结构的定义:typedef struct _BCryptBuffer { ULONG cbBuffer; ULONG BufferType; PVOID pvBuffer;} BCRYPT_BUFFER, *PBCRYPT_BUFFER;结构中的字段含义如下: cbBuffer: 缓冲区的大小,以字节为单位。 BufferType: 指定缓冲区的类型,表示缓冲区的用途。可以是以下值之一: - BCRYPT_CIPHER_DATA:表示缓冲区包含密码算法的数据。 - BCRYPT_PUBLIC_KEY_DATA:表示缓冲区包含公钥的数据。 - BCRYPT_PRIVATE_KEY_DATA:表示缓冲区包含私钥的数据。 - BCRYPT_RSAFULLPRIVATE_BLOB:表示缓冲区包含完整的 RSA 私钥 BLOB 数据。 pvBuffer: 指向缓冲区的指针。这个结构通常用于向...
在 Windows Cryptography API (CNG) 中,BCRYPT_RSAKEY_BLOB 结构体并不是一个直接存在的结构。然而,可以使用 BCryptExportKey 函数来导出 RSA 密钥的 Blob 数据,该 Blob 数据的格式通常是一种特定的结构,包含了 RSA 密钥的相关信息。以下是一个通常与 RSA 密钥导出相关的结构体的例子:typedef struct _BCRYPT_RSAKEY_BLOB { ULONG Magic; ULONG BitLength; ULONG cbPublicExp; ULONG cbModulus; ULONG cbPrime1; ULONG cbPrime2;} BCRYPT_RSAKEY_BLOB, *PBCRYPT_RSAKEY_BLOB;这个结构中的字段含义如下: Magic: 用于指示密钥类型的标志,通常是 BCRYPT_RSAPRIVATE_MAGIC 或 BCRYPT_RSAPUBLIC_MAGIC。 BitLength: RSA 密钥的位长度。 cbPublicExp: 公共指数的字节长度。...
BCRYPT_PSS_PADDING_INFO 结构是 Windows Cryptography API (CNG) 中的一个结构体,用于指定 PSS(Probabilistic Signature Scheme)填充算法的参数。以下是 BCRYPT_PSS_PADDING_INFO 结构的定义:typedef struct _BCRYPT_PSS_PADDING_INFO { LPCWSTR pszAlgId; ULONG cbSalt;} BCRYPT_PSS_PADDING_INFO, *PBCRYPT_PSS_PADDING_INFO;结构中的字段含义如下: pszAlgId: 字符串,指定要使用的哈希算法的标识符。这通常是一个符合 CNG 算法标识符的字符串,例如,BCRYPT_SHA256_ALGORITHM 表示 SHA-256 算法。 cbSalt: 表示 PSS 填充中的盐(salt)的长度,以字节为单位。这个结构通常与签名或验证签名的函数一起使用,以指定 PSS 填充的参数。例如,BCryptSignHash 和 BCryptVerifySignature ...
BCRYPT_PKCS1_PADDING_INFO 结构是 Windows Cryptography API (CNG) 中的一个结构体,用于指定 PKCS#1 标准中定义的填充信息。以下是 BCRYPT_PKCS1_PADDING_INFO 结构的定义:typedef struct _BCRYPT_PKCS1_PADDING_INFO { LPCWSTR pszAlgId;} BCRYPT_PKCS1_PADDING_INFO, *PBCRYPT_PKCS1_PADDING_INFO;结构中的字段含义如下: pszAlgId: 字符串,指定要使用的哈希算法的标识符。这通常是一个符合 CNG 算法标识符的字符串,例如,BCRYPT_SHA256_ALGORITHM 表示 SHA-256 算法。这个结构通常与加密或解密函数一起使用,以指定 PKCS#1 填充的参数。例如,BCryptEncrypt 和 BCryptDecrypt 函数可以使用这个结构作为其参数之一,以指定 PKCS#1 填充的算法和参数。以下是一个示例代码片段,演示如何使用 BCRYPT_PKCS1_PADDING_I...
BCRYPT_OID_LIST 结构是 Windows Cryptography API (CNG) 中的一个结构体,用于表示对象标识符(OID)的列表。以下是 BCRYPT_OID_LIST 结构的定义:typedef struct _BCRYPT_OID_LIST { ULONG dwOIDCount; LPWSTR *pwszOID;} BCRYPT_OID_LIST, *PBCRYPT_OID_LIST;结构中的字段含义如下: dwOIDCount: 表示在 pwszOID 数组中的 OID 数目。 pwszOID: 指向一个指针数组,每个指针指向一个以 NULL 结尾的字符串,表示一个对象标识符。这个结构通常用于获取支持的算法或提供程序的 OID 列表。例如,可以使用 BCryptEnumAlgorithms 函数来检索支持的算法列表,并返回一个 BCRYPT_OID_LIST 结构,其中包含支持的算法的 OID。以下是一个示例代码片段,演示如何使用 BCRYPT_OID_LIST 结构:BCRYPT_OID_LIST *pOidList;NTSTATUS status ...
BCRYPT_OAEP_PADDING_INFO 结构是在 Windows 中使用的 Win32 API 中的一个结构体,定义在 Bcrypt.h 头文件中,用于指定 OAEP(Optimal Asymmetric Encryption Padding)填充算法的参数。以下是 BCRYPT_OAEP_PADDING_INFO 结构的定义:typedef struct _BCRYPT_OAEP_PADDING_INFO { LPCWSTR pszAlgId; PUCHAR pbLabel; ULONG cbLabel;} BCRYPT_OAEP_PADDING_INFO, *PBCRYPT_OAEP_PADDING_INFO;结构中的字段含义如下: pszAlgId: 字符串,指定要使用的哈希算法的标识符。这通常是一个符合 CNG 算法标识符的字符串,例如,BCRYPT_SHA256_ALGORITHM 表示 SHA-256 算法。 pbLabel: 指向一个缓冲区的指针,该缓冲区包含 OAEP 填充中使用的可选标签。可以为 NULL,表示没有标签。 cbLabel: 标签缓...
BCRYPT_MULTI_HASH_OPERATION 是在 Windows 中使用的 Win32 API 中的一种结构体,定义在 Bcrypt.h 头文件中,主要用于支持多重哈希操作。以下是 BCRYPT_MULTI_HASH_OPERATION 结构的定义:typedef struct _BCRYPT_MULTI_HASH_OPERATION { ULONG iHash; BCRYPT_HASH_OPERATION_TYPE *rgOperations; ULONG cOperations; ULONG iExtras; BCRYPT_HASH_OPERATION_TYPE *rgExtras; ULONG cExtras; ULONG ...
BCRYPT_KEY_LENGTHS_STRUCT 结构是 Windows Cryptographic API Next Generation (CNG) 中的一部分,它用于表示密钥的长度信息。以下是该结构的定义:typedef struct _BCRYPT_KEY_LENGTHS_STRUCT { ULONG dwMinLength; ULONG dwMaxLength; ULONG dwIncrement;} BCRYPT_KEY_LENGTHS_STRUCT, *PBCRYPT_KEY_LENGTHS_STRUCT;各个字段的含义如下: dwMinLength:表示密钥的最小长度(以比特为单位)。 dwMaxLength:表示密钥的最大长度(以比特为单位)。 dwIncrement:表示密钥长度的增量(以比特为单位)。如果密钥长度可以是任意值,此字段将为零。这个结构通常用于查询密钥的长度信息,以便在生成密钥时选择合适的密钥长度。你可以在使用相关的密钥生成函数之前调用函数来获取密钥长度信息,然后根据需要选择一个合适的密钥长度。以下是一个简单的示例,演示如何使用这个...
BCRYPT_KEY_DATA_BLOB_HEADER 结构是 Windows Cryptographic API Next Generation (CNG) 中的一部分,它定义了密钥数据 BLOB(Binary Large Object)的头部信息。以下是该结构的定义:typedef struct _BCRYPT_KEY_DATA_BLOB_HEADER { ULONG dwMagic; ULONG dwVersion; ULONG cbKeyData;} BCRYPT_KEY_DATA_BLOB_HEADER;各个字段的含义如下: dwMagic:一个 4 字节的标识符,用于标志密钥数据 BLOB 的类型。不同的密钥类型可能有不同的魔术值。这个字段的值可以是 BCRYPT_KEY_DATA_MAGIC 或者其他特定类型的值。 dwVersion:一个 4 字节的字段,表示密钥数据 BLOB 的版本号。 cbKeyData:一个 4 字节的字段,表示密钥数据的大小(以字节为单位)。这个结构主要用于在密钥导出和导入过程中标识密钥数据的格式和版本信息。在使用这个结构时,...
BCRYPT_KEY_BLOB 结构是 Windows 操作系统上使用的 Win32 Cryptography API 的一部分,用于表示密钥的二进制格式。该结构定义了密钥的存储格式,可以在不同的密钥存储和交换场景中使用。以下是 BCRYPT_KEY_BLOB 结构的定义:typedef struct _BCRYPT_KEY_BLOB { ULONG Magic;} BCRYPT_KEY_BLOB, *PBCRYPT_KEY_BLOB;这个结构只有一个成员: Magic:表示密钥数据的标识符,它用于确定密钥的类型和其他相关信息。具体的 Magic 值将取决于所使用的算法和密钥类型。在使用 BCRYPT_KEY_BLOB 结构时,通常需要查看特定算法的文档以了解相应的 Magic 值。例如,对于对称密钥,可能使用的是 BCRYPT_AES_ALGORITHM,而对于非对称密钥,可能使用的是 BCRYPT_RSAPRIVATE_BLOB 或 BCRYPT_RSAPUBLIC_BLOB 等。使用示例:#include <bcrypt.h>BCRYPT_KEY_BLOB keyB...
BCRYPT_INTERFACE_VERSION 结构是 Windows 操作系统上使用的 Win32 Cryptography API 的一部分。该结构用于指定加密提供程序 (CNG) 的接口版本。以下是 BCRYPT_INTERFACE_VERSION 结构的定义:typedef struct _BCRYPT_INTERFACE_VERSION { USHORT MajorVersion; USHORT MinorVersion;} BCRYPT_INTERFACE_VERSION, *PBCRYPT_INTERFACE_VERSION;这个结构包含两个成员:1. MajorVersion:表示接口的主要版本号。2. MinorVersion:表示接口的次要版本号。应用程序可以使用这个结构来确定系统上安装的 CNG 提供程序的版本信息,以确保与所需的版本兼容性。使用示例:#include <bcrypt.h>BCRYPT_INTERFACE_VERSION version;version.MajorVersion = BCRYPT_MAKE_INTERFACE_VE...
BCRYPT_ECCKEY_BLOB 结构是 Windows Cryptography API Next Generation (CNG) 中用于表示椭圆曲线密钥的结构。以下是该结构的定义:typedef struct _BCRYPT_ECCKEY_BLOB { ULONG dwMagic; ULONG cbKey;} BCRYPT_ECCKEY_BLOB, *PBCRYPT_ECCKEY_BLOB;结构成员说明: dwMagic:一个标识密钥类型的值,通常是 BCRYPT_ECDH_PUBLIC_P256_MAGIC、BCRYPT_ECDH_PRIVATE_P256_MAGIC、BCRYPT_ECDSA_PUBLIC_P256_MAGIC、BCRYPT_ECDSA_PRIVATE_P256_MAGIC 等。 cbKey:密钥数据的大小,以字节为单位。这个结构主要用于导入和导出椭圆曲线密钥。你可以使用相关的函数,如 BCryptExportKey 和 BCryptImportKeyPair,来将椭圆曲线密钥导出为这种结构或从这种结构导入密钥。以下是一些可能的 dwMagic 值...
BCRYPT_DSA_PARAMETER_HEADER 结构是 Windows Cryptography API Next Generation (CNG) 中用于表示 DSA (Digital Signature Algorithm) 参数的结构。以下是该结构的定义:typedef struct _BCRYPT_DSA_PARAMETER_HEADER { ULONG cbLength; ULONG dwMagic; ULONG cbKey;} BCRYPT_DSA_PARAMETER_HEADER, *PBCRYPT_DSA_PARAMETER_HEADER;结构成员说明: cbLength:结构的大小,以字节为单位。 dwMagic:一个标识参数类型的值,通常是 BCRYPT_DSA_PUBLIC_MAGIC 或 BCRYPT_DSA_PRIVATE_MAGIC。 cbKey:参数数据的大小,以字节为单位。这个结构通常用于导入和导出 DSA 参数。你可以使用相关的函数,如 BCryptExportKey 和 BCryptImportKeyPair,来将 DSA 参数导...
在 Windows Cryptography API Next Generation (CNG) 的头文件 Bcrypt.h 中,BCRYPT_DSA_KEY_BLOB 结构用于表示 DSA(Digital Signature Algorithm)密钥的二进制格式。以下是该结构的定义:typedef struct _BCRYPT_DSA_KEY_BLOB { ULONG dwMagic; ULONG cbKey;} BCRYPT_DSA_KEY_BLOB, *PBCRYPT_DSA_KEY_BLOB;结构成员说明: dwMagic:一个标识密钥类型的值,通常是 BCRYPT_DSA_PUBLIC_MAGIC(公钥)或 BCRYPT_DSA_PRIVATE_MAGIC(私钥)。 cbKey:密钥数据的大小,以字节为单位。这个结构主要用于导入和导出 DSA 密钥。你可以使用相关的函数,如 BCryptExportKey 和 BCryptImportKeyPair,来将 DSA 密钥导出为这种结构或从这种结构导入密钥。以下是一些相关的标识符: BCRYPT_DSA_PUBLIC_MA...
BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO 结构是 Windows Cryptography API Next Generation (CNG) 中定义的一个结构,用于在加密和解密操作中提供额外的信息,例如关联数据(Additional Authentication Data,AAD)和初始化向量(Initialization Vector,IV),以及其他与身份验证和密码模式相关的信息。以下是该结构的定义:typedef struct _BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO { ULONG cbSize; ULONG dwInfoVersion; PUCHAR pbNonce; ULONG cbNonce; PUCHAR pbAuthData; ULONG ...
BCRYPT_ALGORITHM_IDENTIFIER 结构是在 Windows Cryptography API Next Generation (CNG) 中定义的,用于指定算法标识符。它通常用于指定算法的名称和 OID (Object Identifier)。以下是该结构的定义:typedef struct _BCRYPT_ALGORITHM_IDENTIFIER { LPWSTR pszName; ULONG dwClass; ULONG dwFlags;} BCRYPT_ALGORITHM_IDENTIFIER;结构成员说明: pszName:一个指向包含算法名称的 null 终止字符串的指针。 dwClass:一个标志,指示算法的类别。可能的值包括 BCRYPT_HASH_INTERFACE、BCRYPT_SYM_CIPHER_INTERFACE、BCRYPT_ASYMMETRIC_ENCRYPTION_INTERFACE 等。 dwFlags:一组标志,用于指定算法的属性。这个结构通常用在一些与算法相关的函数和结构体中,例如 BCRYPT_KEY_ALG_HAN...
最新文章