首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DSACryptoServiceProvider对RSACryptoServiceProvider

DSACryptoServiceProvider对RSACryptoServiceProvider
EN

Stack Overflow用户
提问于 2009-07-29 12:00:57
回答 3查看 2.8K关注 0票数 1

我好像有点误会。

我需要用数字签名实现公开/私钥加密(PKCS)。我在.Net框架中找到了以下类。

  1. RSACryptoServiceProvider
  2. DSACryptoServiceProvider

我想加密文件,然后对它们进行数字签名,然后在接收方验证签名,然后解密。

类DSACryptoServiceProvider具有函数VerifySignature,它同时接受有符号值和无符号值!

我的问题是是加密还是签名?

如果我发送加密密钥的未签名密钥(连同签名密钥),则任何第三方都可以解密该文本。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-07-29 13:18:37

签署是指:

  1. 发件人在发送
  2. 发件人之前从数据中计算哈希值,用发送者私钥
  3. 接收者加密接收者从接收到的数据中计算哈希值
  4. 接收机解密发送者带有发送者公钥的签名(
  5. 接收器比较本地计算的散列和解密签名H 210g 211)

我认为VerifySignature()执行步骤4)和步骤5)

在步骤1)和步骤3中,您为加密或未加密的数据创建哈希,只要发送方和接收方完全相同,就可以选择。

请注意,这与数据的实际加密无关,您甚至可以对未加密的数据签名。还请注意,密钥的使用是相反的,通常您用接收者的公钥加密。

票数 2
EN

Stack Overflow用户

发布于 2009-07-29 12:07:01

你总是加密然后签字。这样做意味着接收方可以检查加密数据在传输过程中没有被更改,而不必进行解密,这可能是一个很长的过程。

票数 0
EN

Stack Overflow用户

发布于 2009-07-29 14:16:53

只是为了澄清一些可能的混淆(但可能很明显):

appropriate.

  • You不使用非对称算法加密消息本身,比如AES可能更多的是,发送加密消息和哈希(哈希是加密的)。接收者自己生成哈希,并检查它是否与您发送的散列(他们使用发件人公钥解密)相匹配。

如果您没有用于对称加密(即消息本身的加密)的共享密钥,那么您可能应该生成一个密钥,并将其与接收者的公钥加密,并将其与已签名的消息一起发送。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1199761

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档