我有一个客户端服务器方案和一个有效载荷(x)。非对称加密,接收方可以解密 - 但必须完全不能加密数据
- 服务器生成x和其加密:ENC(X)
- ENC(x)被发送到客户端
- 客户端解密数据以获得X
然而,限制我必须强制执行是:
- 的加密和解密密钥必须是不同的
- 客户不得有加密密钥
因此直线上升RSA是窗外,因为你需要公共和私有密钥解密,和公钥可以加密它。
所以目标是双重的:客户端能够解密一段数据,确保它来自一个已知的来源 - 但是客户端无法生成自己的原始有效负载的加密版本。
理想的C#,但我可以接受类似的语言答案。
编辑:我得知只有私钥需要解密,而不是两个密钥 - 但似乎没有办法使.Net中的RSACryptoServiceProvider做到这一点。
这听起来像是RSA签名的标准使用。你是否真的想要接收者解密,还是你希望接收者验证签名?如果是这样,为什么? – CodesInChaos
[RSA#签名消息](http://en.wikipedia.org/wiki/RSA_(算法)#Signing_messages) – Rawling
是接收方需要原始数据(它包含许可信息)并且需要能够验证其来源。 – PhonicUK