【发布时间】:2012-09-25 20:59:59
【问题描述】:
我拥有的是客户端服务器场景和有效负载 (x)。
- 服务器生成x并加密:enc(x)
- enc(x) 被发送到客户端
- 客户端解密数据得到x
但是,我必须执行的限制是:
- 加密和解密密钥必须不同
- 客户端不得拥有加密密钥
所以直接 RSA 是不可能的,因为你需要公钥和私钥来解密,而公钥可以让你加密它。
因此,目标是双重的:让客户端能够解密一段数据,确保它来自已知来源 - 但让客户端无法生成自己的原始有效负载的加密版本。
理想情况下是 C#,但我可以接受类似的语言答案。
编辑:我被告知只需要私钥来解密而不是两个密钥 - 但是似乎没有办法让 .Net 中的 RSACryptoServiceProvider 做到这一点。
【问题讨论】:
-
这听起来像是 RSA 签名的标准用法。您真的希望接收方解密,还是希望接收方验证签名?如果有,为什么?
-
是的,接收方需要原始数据(其中包含许可信息)并且需要能够验证其来源。
-
Rawling - 您需要提供一个更具体的示例 - 该示例不会阻止接收者也能够创建自己的签名,因为他们拥有两个密钥。
-
你为什么关心接收者是否可以创建加密消息?这些邮件很容易被拒绝,因为它们没有由发件人签名。
标签: c# encryption encryption-asymmetric