在.NET加密API中,我注意到CspParameters对象具有一个KeyNumber属性,可用于指定密钥是签名密钥还是交换密钥。就RSA密钥而言,这两者之间是否有任何真正的区别?具体而言,如果我使用交换密钥进行签名,生成的密钥是否存在不适合或不安全的问题?
您不应该使用交换密钥进行签名。根据MSDN,交换密钥是分发给其他人的,以便他们加密内容并将其发送给您。如果他们想要签署消息以表示他们发送了它,则会使用他们自己的私钥(签名密钥)进行签名,并使用您的公钥进行加密。按照Diffie-Hellman术语,如果您使用公钥对东西进行签名,然后与其他人分发/交换它们,他们将能够签署消息,使其似乎来自您。只需将交换密钥视为您的公钥,将签名密钥视为您的私钥即可。