Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/164.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 我可以从智能卡的密钥容器中获取公钥/私钥对吗?_C++_Smartcard_Cryptoapi_Private Key_Pkcs#11 - Fatal编程技术网

C++ 我可以从智能卡的密钥容器中获取公钥/私钥对吗?

C++ 我可以从智能卡的密钥容器中获取公钥/私钥对吗?,c++,smartcard,cryptoapi,private-key,pkcs#11,C++,Smartcard,Cryptoapi,Private Key,Pkcs#11,我可以使用PKCS#11或CryptoAPI从智能卡内的密钥容器中获取公钥/私钥对吗?我在这方面不是专家,但我认为智能卡的关键在于无法提取私钥。您将数据发送到卡,并让它在自己的处理器上执行加密操作。这取决于具体情况。CryptoAPI(智能卡的CSP)和PKCS#11都允许您拥有可导出的密钥对。但是,通常使用非可导出私钥来充分发挥智能卡的潜力 因此,如果您正在编写应用程序,它将成为您的选择。否则,其他人已经为您做出了选择;-) 公钥是可读的。您还可以查找公钥证书。非常确定您可以在pkcs#11中

我可以使用PKCS#11或CryptoAPI从智能卡内的密钥容器中获取公钥/私钥对吗?

我在这方面不是专家,但我认为智能卡的关键在于无法提取私钥。您将数据发送到卡,并让它在自己的处理器上执行加密操作。

这取决于具体情况。CryptoAPI(智能卡的CSP)和PKCS#11都允许您拥有可导出的密钥对。但是,通常使用可导出私钥来充分发挥智能卡的潜力


因此,如果您正在编写应用程序,它将成为您的选择。否则,其他人已经为您做出了选择;-)

公钥是可读的。您还可以查找公钥证书。非常确定您可以在pkcs#11中拥有不可导出的公钥和证书(即使我猜不出它们可以用于什么;-)但这与问题无关,因为关于密钥对使私钥成为PKCS#11 2.20中可提取的决定因素的问题只适用于私钥和私钥,如规范中所述(因为PKCS#11非常松散,当然可以滥用规范…)。您可以拥有私有证书和公钥(在可读之前需要登录),但在读取之后,实际的密钥/证书值仍然是可读的。但是,在完整密钥对的上下文中,这是正确的。向下投票,因为在CryptoAPI中,如果密钥标记为可导出,则可以使用CryptoExportKey函数导出密钥。向上投票,因为即使这样,如果标记为可导出,也可以导出密钥。卡的目的是在内部进行加密运算,并允许导出公钥,但私钥始终不可导出(至少90%,因为这是卡的全部要点)。