Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.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
.net 加密API中交换密钥和签名密钥的区别_.net_Security_Cryptography_Cryptoapi - Fatal编程技术网

.net 加密API中交换密钥和签名密钥的区别

.net 加密API中交换密钥和签名密钥的区别,.net,security,cryptography,cryptoapi,.net,Security,Cryptography,Cryptoapi,在.NET crypto API中,我注意到CspParameters对象有一个KeyNumber属性,可用于指定密钥是签名密钥还是交换密钥 就RSA密钥而言,这两者之间有什么真正的区别吗?具体地说,如果我使用交换密钥进行签名,那么生成的密钥是否存在不适合或不安全的情况?您不应该使用交换密钥进行签名。 根据,将交换密钥分发给其他人,以便他们可以加密要发送给您的内容。如果他们希望对消息进行签名以表明他们发送了该消息,那么他们将使用自己的(签名密钥)进行签名,并使用您的公钥进行加密。用Diffie-

在.NET crypto API中,我注意到CspParameters对象有一个
KeyNumber
属性,可用于指定密钥是签名密钥还是交换密钥


就RSA密钥而言,这两者之间有什么真正的区别吗?具体地说,如果我使用交换密钥进行签名,那么生成的密钥是否存在不适合或不安全的情况?

您不应该使用交换密钥进行签名。
根据,将交换密钥分发给其他人,以便他们可以加密要发送给您的内容。如果他们希望对消息进行签名以表明他们发送了该消息,那么他们将使用自己的(签名密钥)进行签名,并使用您的公钥进行加密。用Diffie-Hellman的话说,如果你用你的公钥签名,然后与其他人分发/交换,他们将能够对消息进行签名,使它们看起来像来自你。只需将交换密钥视为公共密钥,将签名密钥视为私有密钥

我认为,如果您使用存储密钥周围的内置安全性来定义谁可以访问密钥,他们是否可以使用私钥或公钥,以及用于什么目的,那么这一点是适用的。在我的例子中,我导出密钥以供其他地方使用,因此我更感兴趣的是密钥本身的属性,而不是加密API管理密钥周围安全性的方式(希望有意义)如何传输密钥?PFX/P12?令牌?@Raj-我将密钥导出为Csp Blob。从那里,我将它们存储在一个数据库中,私钥使用从用户密码派生的单独AES密钥进行加密。