Win32 API:BCryptVerifySignature 函数(Bcrypt.h)
BCryptVerifySignature 函数是 Windows Cryptography API Next Generation (CNG) 中的一个函数,用于验证数字签名。它通常与非对称密钥对一起使用,其中公钥用于验证签名,私钥用于签名生成。以下是该函数的基本语法和说明:NTSTATUS BCryptVerifySignature( BCRYPT_KEY_HANDLE hKey, VOID *pPaddingInfo, PUCHAR pbHash, ULONG cbHash, PUCHAR pbSignature, ULONG cbSignature, ULONG dwFlags);参数说明: hKey:用于验证签名的密钥的句柄。 pPaddingInfo:一个指向填充信息结构的指针,可以为 NULL。 pbHash:指向用于签名的哈希值的缓冲区的指针。 cbHash:哈希值的大小,以字节为单位。 pbSignature:指向要验证的签名...
Win32 API:BCryptSignHash 函数(Bcrypt.h)
BCryptSignHash 函数是 Windows Cryptography API Next Generation (CNG) 中的一个函数,用于对哈希值进行数字签名。它通常与非对称密钥对一起使用,其中私钥用于签名生成,公钥用于验证签名。以下是该函数的基本语法和说明:NTSTATUS BCryptSignHash( BCRYPT_KEY_HANDLE hKey, VOID *pPaddingInfo, PUCHAR pbInput, ULONG cbInput, PUCHAR pbOutput, ULONG cbOutput, ULONG *pcbResult, ULONG dwFlags);参数说明: hKey:用于签名的密钥的句柄。 pPaddingInfo:一个指向填充信息结构的指针,可以为 NULL。 pbInput:指向要签名的数据的缓冲区的指针。 cbInput:要签名的数据的大小,以字节为单位。 pbO...
Win32 API:BCryptSetProperty 函数(Bcrypt.h)
BCryptSetProperty 函数是 Windows Cryptography API Next Generation (CNG) 中的一个函数,用于设置密钥对象的属性。该函数允许你在创建或导入密钥后,通过设置不同的属性来配置密钥的行为。以下是该函数的基本语法和说明:NTSTATUS BCryptSetProperty( BCRYPT_HANDLE hObject, LPCWSTR pszProperty, PUCHAR pbInput, ULONG cbInput, ULONG dwFlags);参数说明: hObject:要设置属性的密钥对象的句柄。 pszProperty:一个字符串,表示要设置的属性的名称。 pbInput:一个指向包含属性值的缓冲区的指针。 cbInput:属性值缓冲区的大小,以字节为单位。 dwFlags:标志位,用于控制属性的设置。可以为零或以下之一: - BCRYPT_PROPERTY_FLAG (0x00000008):指示属性应该是一个标志,而不是包含数据的缓冲区。函数返回一...
Win32 API:BCryptSecretAgreement 函数(Bcrypt.h)
BCryptSecretAgreement 函数是 Windows Cryptography API Next Generation (CNG) 中的一个函数,用于创建两个密钥之间的协商密钥(Secret Agreement)。这个函数的主要用途是在密钥协商过程中生成共享的密钥材料。以下是该函数的基本语法和说明:NTSTATUS BCryptSecretAgreement( BCRYPT_KEY_HANDLE hPrivKey, BCRYPT_KEY_HANDLE hPubKey, BCRYPT_SECRET_HANDLE *phAgreedSecret, ULONG dwFlags);参数说明: hPrivKey:用于协商的私钥的句柄。 hPubKey:用于协商的公钥的句柄。 phAgreedSecret:一个指向 BCRYPT_SECRET_HANDLE 类型的指针,用于接收生成的协商密钥的句柄。 dwFlags:标志位,可以是零或以下之一: - BCRYPT_SECRECT_AGREEMENT_MULTI_FLAG:表示可以使用多个私钥进行密...
Win32 API:BCryptRegisterConfigChangeNotify 函数(Bcrypt.h)
BCryptRegisterConfigChangeNotify 函数是 Windows Cryptography API Next Generation (CNG) 提供的一个函数,用于注册配置更改通知。它允许应用程序在系统配置更改时接收通知。以下是该函数的基本语法和说明:NTSTATUS BCryptRegisterConfigChangeNotify( PBCRYPT_NOTIFICATION_REGISTRATION *pNotificationRegistration, ULONG dwFlags);参数说明: pNotificationRegistration:一个指向 BCRYPT_NOTIFICATION_REGISTRATION 结构指针的指针。该结构包含有关注册的信息,例如回调函数等。 dwFlags:一个标志,指定注册的类型。可以是以下之一或它们的组合: - BCRYPT_REG_CHANGE_NO_MORE_NOTIFICATIONS:注册通知,但不接收更多的通知。 - BCRYPT_REG_CHA...
Win32 API:BCryptRegisterConfigChangeNotify 函数(Bcrypt.h)
BCryptRegisterConfigChangeNotify 函数是 Windows 中的一个 Win32 API 函数,它位于 Bcrypt.h 头文件中,用于注册配置更改通知。这个函数的目的是允许应用程序在系统配置更改时接收通知。以下是该函数的基本语法和说明:NTSTATUS BCryptRegisterConfigChangeNotify( PBCRYPT_NOTIFICATION_REGISTRATION *pNotificationRegistration, ULONG dwFlags); pNotificationRegistration:一个指向 BCRYPT_NOTIFICATION_REGISTRATION 结构的指针,该结构包含有关注册的信息,包括回调函数等。 dwFlags:一个标志,用于指定注册的类型。可以是以下之一或它们的组合: - BCRYPT_REG_CHANGE_NO_MORE_NOTIFICATIONS:注册通知,但不接收更多的通知。 - BCRYPT_REG_CHANGE_NOT...
Win32 API:BCryptOpenAlgorithmProvider 函数(Bcrypt.h)
BCryptOpenAlgorithmProvider 函数是 Windows Cryptography API: Next Generation (CNG) 中的一个函数,用于打开或创建一个算法提供者对象,以便进行加密、哈希等操作。以下是该函数的原型:NTSTATUS BCryptOpenAlgorithmProvider( LPCWSTR pszAlgId, LPCWSTR pszImplementation, ULONG dwFlags, BCRYPT_ALG_HANDLE *phAlgorithm, ULONG dwReserved);参数说明: pszAlgId: 指定要打开的算法的标识符,如 AES、RSA 等。 pszImplementation: 可选参数,指定要使用的算法提供者的名称,通常可以为 NULL。 dwFlags: 控制算法提供者的打开行为的标志,通常可以设置为零。 phAlgorithm: 指向算法提供者句柄的指针,该句柄将在函数成功调用后被填充。 dwRes...
Win32 API:BCryptKeyDerivation 函数(Bcrypt.h)
BCryptKeyDerivation 函数是 Windows Cryptography API: Next Generation (CNG) 中的一个函数,用于执行密钥派生操作。以下是该函数的原型:NTSTATUS BCryptKeyDerivation( BCRYPT_KEY_HANDLE hKey, BCryptBufferDesc *pParameterList, PUCHAR pbDerivedKey, ULONG cbDerivedKey, ULONG *pcbResult, ULONG dwFlags);参数说明: hKey: 用于密钥派生的原始密钥的句柄。 pParameterList: 一个指向 BCryptBufferDesc 结构的指针,该结构包含派生密钥所需的参数。 pbDerivedKey: 指向输出缓冲区的指针,用于存储派生的密钥。 cbDerivedKey: 输出缓冲区的大小(以字节为单位)。 pcbResult: 返回实际写入输出缓冲区的字节数的指针...
Win32 API:BCryptImportKeyPair 函数(Bcrypt.h)
BCryptImportKeyPair 函数是 Windows Cryptography API: Next Generation (CNG) 中的一个函数,用于导入密钥对。以下是该函数的原型:NTSTATUS BCryptImportKeyPair( BCRYPT_ALG_HANDLE hAlgorithm, BCRYPT_KEY_HANDLE hImportKey, LPCWSTR pszBlobType, BCRYPT_KEY_HANDLE *phKey, PUCHAR pbInput, ULONG cbInput, ULONG dwFlags);参数说明: hAlgorithm: 密钥对的算法句柄。 hImportKey: 密钥对的句柄,用于导入密钥对的句柄。 pszBlobType: 指定输入数据的格式,通常是 BLOB 类型,如 BCRYPT_OPAQUE_KEY_BLOB。 phKey: 指向导入密钥对的句柄的指针。 pbInput: 包含要导入的密钥对数据的缓冲区。 ...
Win32 API:BCryptImportKey 函数(Bcrypt.h)
BCryptImportKey 函数是 Windows Cryptography API: Next Generation (CNG) 中的一个函数,用于导入一个密钥。以下是该函数的原型:NTSTATUS BCryptImportKey( BCRYPT_ALG_HANDLE hAlgorithm, BCRYPT_KEY_HANDLE hImportKey, LPCWSTR pszBlobType, BCRYPT_KEY_HANDLE *phKey, PUCHAR pbKeyObject, ULONG cbKeyObject, PUCHAR pbInput, ULONG cbInput, ULONG dwFlags);参数说明: hAlgorithm: 密钥的算法句柄。 hImportKey: 密钥的句柄,用于导入密钥的句柄。 pszBlobType: 指定输入数据的格式,通常是 BLOB 类型,如 BCRYPT_OPAQUE_KEY_...
Win32 API:BCryptHashData 函数(Bcrypt.h)
BCryptHashData 函数是 Windows Cryptography API: Next Generation (CNG) 中的一个函数,用于向哈希对象输入数据以进行哈希计算。以下是该函数的原型:NTSTATUS BCryptHashData( BCRYPT_HASH_HANDLE hHash, PUCHAR pbInput, ULONG cbInput, ULONG dwFlags);参数说明: hHash: 哈希对象的句柄。 pbInput: 指向输入数据的指针。 cbInput: 输入数据的大小(以字节为单位)。 dwFlags: 控制哈希数据操作的标志,通常可以设置为零。函数的返回值是 NTSTATUS 类型,成功时返回 STATUS_SUCCESS。BCryptHashData 用于将数据输入到哈希对象中,以便进行哈希计算。在使用哈希对象之前,需要先通过 BCryptCreateHash 函数创建哈希对象,并使用 BCryptHashData 函数输入要进行哈希的数据。如果有多个数据块需要...
Win32 API:BCryptHash 函数(Bcrypt.h)
在 Windows Cryptography API: Next Generation (CNG) 中,BCryptHash 函数已被废弃。它的功能已被 BCryptCreateHash 函数取代。如果你需要创建哈希对象,应该使用 BCryptCreateHash 函数而不是 BCryptHash 函数。以下是 BCryptCreateHash 函数的原型:NTSTATUS BCryptCreateHash( BCRYPT_ALG_HANDLE hAlgorithm, BCRYPT_HASH_HANDLE *phHash, PUCHAR pbHashObject, ULONG cbHashObject, PUCHAR pbSecret, ULONG cbSecret, ULONG dwFlags);这个函数用于创建一个哈希对象,其中包含了用于哈希计算的算法信息。参数和返回值的意义如下: hAlgorithm: 用于哈希计算的算法句柄。 phHash: 指向哈...
Win32 API:BCryptGetProperty 函数(Bcrypt.h)
BCryptGetProperty 函数是 Windows Cryptography API: Next Generation (CNG) 中的一个函数,用于获取加密算法或密钥对象的属性值。以下是该函数的原型:NTSTATUS BCryptGetProperty( BCRYPT_HANDLE hObject, LPCWSTR pszProperty, PUCHAR pbOutput, ULONG cbOutput, ULONG *pcbResult, ULONG dwFlags);参数说明: hObject: 加密算法或密钥对象的句柄,可以是算法句柄或密钥句柄。 pszProperty: 指定要获取的属性的名称。 pbOutput: 指向输出缓冲区的指针,用于存储获取的属性值。 cbOutput: 输出缓冲区的大小(以字节为单位)。 pcbResult: 返回实际写入输出缓冲区的字节数的指针。 dwFlags: 控制属性获取的标志,通常可以设置为零。函数的返回值是 NTSTATUS 类型,成功时返回 ...
Win32 API:BCryptGetFipsAlgorithmMode 函数(Bcrypt.h)
BCryptGetFipsAlgorithmMode 函数是 Windows Cryptography API: Next Generation (CNG) 中的一个函数,用于检查 FIPS(Federal Information Processing Standards)算法模式是否启用。以下是该函数的原型:NTSTATUS BCryptGetFipsAlgorithmMode( BOOLEAN *pfEnabled);参数说明: pfEnabled: 用于存储 FIPS 模式状态的布尔指针。如果 FIPS 模式已启用,*pfEnabled 将设置为 TRUE;否则,将设置为 FALSE。函数的返回值是 NTSTATUS 类型,成功时返回 STATUS_SUCCESS。FIPS 模式是一种在密码学操作中要求使用特定算法的模式,通常用于满足特定的安全标准。当 FIPS 模式启用时,某些密码学算法和协议的使用将受到限制,以确保满足 FIPS 要求。通过调用 BCryptGetFipsAlgorithmMode 函数,你可以查询当前系统是否处于 FIPS 模式。如果返回的 pfEnabl...
Win32 API:BCryptGenRandom 函数(Bcrypt.h)
BCryptGenRandom 函数是 Windows Cryptography API: Next Generation (CNG) 中的一个函数,用于生成随机数。以下是该函数的原型:NTSTATUS BCryptGenRandom( BCRYPT_ALG_HANDLE hAlgorithm, PUCHAR pbBuffer, ULONG cbBuffer, ULONG dwFlags);参数说明: hAlgorithm: 用于生成随机数的算法句柄。通常可以传入 NULL,表示使用默认的随机数生成器。 pbBuffer: 指向输出缓冲区的指针,用于存储生成的随机数。 cbBuffer: 输出缓冲区的大小(以字节为单位)。 dwFlags: 控制生成随机数的标志,通常可以设置为零。函数的返回值是 NTSTATUS 类型,成功时返回 STATUS_SUCCESS。BCryptGenRandom 用于生成安全的伪随机数,这对于加密和其他安全应用程序非常重要。生成的随机数将存储在提供的输出缓冲区中,可以用于密钥生成...
Win32 API:BCryptGenerateSymmetricKey 函数(Bcrypt.h)
BCryptGenerateSymmetricKey 函数是 Windows Cryptography API: Next Generation (CNG) 中的一个函数,用于生成对称密钥。以下是该函数的原型:NTSTATUS BCryptGenerateSymmetricKey( BCRYPT_ALG_HANDLE hAlgorithm, BCRYPT_KEY_HANDLE *phKey, PUCHAR pbKeyObject, ULONG cbKeyObject, PUCHAR pbSecret, ULONG cbSecret, ULONG dwFlags);参数说明: hAlgorithm: 用于生成对称密钥的算法句柄。 phKey: 指向对称密钥句柄的指针,该句柄将在函数成功调用后被填充。 pbKeyObject: 用于存储密钥对象的缓冲区。 cbKeyObject: pbKeyObject 缓冲区的大小(以字节为单位)。 pbSecret: 包含密...
Win32 API:BCryptGenerateKeyPair 函数(Bcrypt.h)
BCryptGenerateKeyPair 函数是 Windows Cryptography API: Next Generation (CNG) 中的一个函数,用于生成一个密钥对。以下是该函数的原型:NTSTATUS BCryptGenerateKeyPair( BCRYPT_ALG_HANDLE hAlgorithm, BCRYPT_KEY_HANDLE *phKey, ULONG dwLength, ULONG dwFlags);参数说明: hAlgorithm: 用于生成密钥对的算法句柄。 phKey: 指向密钥对句柄的指针,该句柄将在函数成功调用后被填充。 dwLength: 密钥的长度,以比特为单位。 dwFlags: 控制密钥生成的标志,通常可以设置为零。函数的返回值是 NTSTATUS 类型,成功时返回 STATUS_SUCCESS。这个函数用于创建一个密钥对,其中包括公钥和私钥。生成的密钥对将存储在 phKey 所指向的密钥句柄中。生成密钥对后,可能需要通过其他函数设置密钥的属性(如 BCryptSetPrope...
Win32 API:BCryptFreeBuffer 函数(Bcrypt.h)
BCryptFreeBuffer 函数是 Windows Cryptography API: Next Generation (CNG) 中的一个函数,用于释放由 Cryptography API 分配的缓冲区。以下是该函数的原型:NTSTATUS BCryptFreeBuffer( PVOID pvBuffer);参数说明: pvBuffer: 要释放的缓冲区的指针。函数的返回值是 NTSTATUS 类型,成功时返回 STATUS_SUCCESS。在使用 CNG 函数时,有时需要通过函数(如 BCryptGetProperty)获取一些属性或信息,这些信息可能会返回一个缓冲区的指针。当不再需要这个缓冲区时,就可以使用 BCryptFreeBuffer 函数将其释放,以避免内存泄漏。例如,如果你调用 BCryptGetProperty 获取某个属性值,该函数返回一个缓冲区的指针,那么在使用完该缓冲区后,就应该调用 BCryptFreeBuffer 来释放内存。总体来说,BCryptFreeBuffer 用于释放由 CNG 分配的缓冲区,是良好内存管理的一部分。
Win32 API:BCryptFinishHash 函数(Bcrypt.h)
在 Windows Cryptography API: Next Generation (CNG) 中,BCryptFinishHash 函数用于完成哈希对象的计算,生成哈希值。以下是该函数的原型:NTSTATUS BCryptFinishHash( BCRYPT_HASH_HANDLE hHash, PUCHAR pbOutput, ULONG cbOutput, ULONG dwFlags);参数说明: hHash: 要完成的哈希对象的句柄。 pbOutput: 指向输出缓冲区的指针,用于存储生成的哈希值。 cbOutput: 输出缓冲区的大小(以字节为单位)。 dwFlags: 控制哈希操作的标志,通常可以设置为零。函数的返回值是 NTSTATUS 类型,成功时返回 STATUS_SUCCESS。使用哈希函数时,通常需要经过初始化、数据输入、完成哈希等步骤。BCryptFinishHash 就是用于完成哈希的最后一步。在调用该函数之前,需要先调用 BCryptHashData 或类似的函数输入要进...
Win32 API:BCryptFinalizeKeyPair 函数(Bcrypt.h)
BCryptFinalizeKeyPair 函数是 Windows Cryptography API: Next Generation (CNG) 提供的一个函数,用于完成密钥对的创建过程。该函数的主要目的是在密钥对创建的过程中完成相关的操作,使得密钥对可以被使用。以下是该函数的原型:NTSTATUS BCryptFinalizeKeyPair( BCRYPT_KEY_HANDLE hKey, ULONG dwFlags);参数说明: hKey: 要完成的密钥对的句柄。 dwFlags: 控制密钥对的最终化行为的标志。通常可以设置为零。函数的返回值是 NTSTATUS 类型,成功时返回 STATUS_SUCCESS。在使用密钥对之前,需要经历一系列的步骤来创建和初始化密钥对。首先,使用 BCryptGenerateKeyPair 函数创建一个密钥对,然后可能需要通过一些函数(例如 BCryptSetProperty)来设置密钥的属性。最后,使用 BCryptFinalizeKeyPair 函数来完成密钥对的创建过程。这个函数的调用通常标志着密钥对已经准备好使...