.net - Crypto API 中交换 key 和签名 key 的区别

标签 .net security cryptography cryptoapi

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

就 RSA key 而言,两者之间有什么真正的区别吗?具体来说,如果我使用交换 key 进行签名,生成的 key 是否存在某些问题,导致该用途不合适或不安全?

最佳答案

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

关于.net - Crypto API 中交换 key 和签名 key 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15573359/

相关文章:

android - bouncycaSTLe 中的 NoSuchMethodError

C# Rijndael 解密返回额外的问号字符

c# - EF LINQ ToList 非常慢

c# - 线程携带重复的字符串对象

rest - 如何保护 API 端点以报告客户端 JS 错误以防止垃圾邮件(如果有必要)?

php - 有没有更好的方法来保护特定网页?

Azure 上的 .Net CryptographicException "Object already exists"

asp.net - 将 .aspx 网站转换为 ASP.NET Core

.net - 等待文件在 .NET 中解锁

security - 生成 LTPA token ?