Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.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_Apdu_Cac - Fatal编程技术网

C# 智能卡非对称密钥生成

C# 智能卡非对称密钥生成,c#,smartcard,apdu,cac,C#,Smartcard,Apdu,Cac,我在研究如何从PIV卡生成非对称密钥方面走到了死胡同。我已经看过NIST sp800-73-3标准,但我无法做到这一点。在该文档的第3部分中概述了如何使用INS47来执行此操作,但我得到了一个6D00错误。在获得此命令之前,是否需要发送另一个命令 另外,如果我错了,请纠正我,但根据我的理解,当生成密钥时,私钥存储在卡上,而公钥返回。为了使用私钥加密数据,必须将数据发送到卡并返回加密信息。这准确吗?一张卡一次可以存储多少把钥匙?标准是一件好事,但对于智能卡来说,这还远远不够。您需要一份特定卡的手册

我在研究如何从PIV卡生成非对称密钥方面走到了死胡同。我已经看过NIST sp800-73-3标准,但我无法做到这一点。在该文档的第3部分中概述了如何使用INS47来执行此操作,但我得到了一个6D00错误。在获得此命令之前,是否需要发送另一个命令


另外,如果我错了,请纠正我,但根据我的理解,当生成密钥时,私钥存储在卡上,而公钥返回。为了使用私钥加密数据,必须将数据发送到卡并返回加密信息。这准确吗?一张卡一次可以存储多少把钥匙?

标准是一件好事,但对于智能卡来说,这还远远不够。您需要一份特定卡的手册,描述它支持的标准的哪些部分。 对于密钥生成,最好了解ISO 7816第8部分(除卡手册外)。有返回公钥的命令变体,还有一些命令变体将公钥静默地留在卡中以供以后检索。对于您的错误:您的卡可能处于生命周期阶段,密钥生成不再可用,但甚至指令代码46也值得一试


用于加密的命令是执行安全操作,如7816-8所述。请注意,使用非对称密钥进行加密对于大量明文来说是不常见的。通常,文本使用对称密码加密,出于性能原因,仅使用非对称加密传输对称密钥。

通常,您需要在生成密钥之前对卡进行身份验证。这通常是在某种个性化阶段执行的。如果一个公钥被返回,那么它仍然需要以某种方式被信任。私钥确实应该始终留在卡上(如果分配给它)。通常可以创建多少密钥只取决于智能卡的实现和卡上可用的持久内存。