我正在使用下一代加密 API (CNG) 实现 ECDHE。我成功生成了公钥和私钥。对于预共享 key ,我使用 BCryptSecretAgreement API,它返回预共享 key secret 句柄 (BCRYPT_SECRET_HANDLE)。
如何从 BCRYPT_SECRET_HANDLE 中将预共享 key 导出为 BYTE 数组?
最佳答案
从 Windows 10 开始,您可以使用 BCRYPT_KDF_RAW_SECRET
调用 BCryptDeriveKey()
。
生成的 key 数据是原始 secret 。
注意 1:bcrypt.h 表示此格式适用于“WINBLUE”,如果我理解正确的话,它将是 Windows 8.1,但我收到了在 Windows 8.1 和 Windows Server 2012 R2 上使用此 KDF 类型的 STATUS_NOT_SUPPORTED .但是,这适用于 Windows 10。)
注意 2:我发现使用此 KDF 类型返回的数据是小端(BCrypt 中的其他所有内容都是大端)。因此,要在其他大端世界中使用该值,您需要对数据进行字节翻转。
关于c++ - 从 BCRYPT_SECRET_HANDLE 将共享 secret 导出为 BYTE 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38115602/