CryptoAPI中的CryptImportKey接受0的hPubKey来导入加密的会话密钥
任何人都可以解释为什么CryptImportKey函数在从另一台计算机导入加密的会话类型密钥blob时接受hPubKey为0(解密密钥句柄)?
环境是这样的:
PC#1:在本地密钥容器中生成密钥交换密钥对(公共/私有)(
CryptGenKey
w/ AT_KEYEXCHANGE),然后将公共部分导出为PUBLICKEYBLOB并将其发送到PC#2
PC#2:从PC#1获取公钥 - blob并将其导入本地密钥容器。在同一本地密钥容器中创建会话密钥。使用从客户端密钥blob导入的公钥(将其用于加密会话密钥)将本地密钥容器会话密钥导出到SIMPLEBLOB(CryptExportKey
)。
PC#1:从PC#2获取加密的会话密钥blob并调用CryptImportKey
,提供本地密钥容器hProv,密钥blob缓冲区指针和长度,hPubKey和标志的0(零)以及指向HCRYPTKEY的指针处理。
完成上述操作后,我得到一个有效的句柄,可以使用我收到的句柄调用CryptEncrypt
和CryptDecrypt
。是的,如果我在CryptImportKey上指定从PC#1上面的第一步生成的密钥交换密钥对的句柄,那也可以。我只是不明白为什么0为hPubKey工作,就好像CryptoAPI“知道”私钥加密数据是什么。
谢谢。
没有找到相关结果
已邀请:
1 个回复
焙恍挝厂熄