【问题标题】:Decryption-Only method in C#C# 中的仅解密方法
【发布时间】:2013-12-08 17:58:31
【问题描述】:

我正在寻找一种安全的方式来为我的应用程序实现许可证文件,其中包含标志和功能。我在C# 中读到了Asymmetric key 机制,但RSA 的目的与我的需要有点相反。

我想生成一个许可文件:加密密码。该应用程序将拥有解密文件的密钥 - 但无法重新加密它。在我检查的所有地方,该示例都显示了甲方如何生成公钥和私钥并将公钥传递给乙方,以便它可以将其用于加密。它可能在字里行间,但我看不到。

我检查了这个:EncryptingDecrypting

我可以找到一种方法来使用我看到的代码来实现它,但我不确定它是否真的安全。

【问题讨论】:

  • 我认为您实际上想要一个签名,而不是加密/解密。
  • @CodesInChaos:你能解释一下吗?我不熟悉“签名”流程。
  • 所以我查看了:msdn.microsoft.com/en-us/library/9tsc5d0z(v=vs.110).aspx 1. 我应该签署什么(可能不是纯文本)。我需要签署类似:"num=10;enable_feature=1" 2. 我应该如何保护客户端的密钥?

标签: c# cryptography encryption-asymmetric


【解决方案1】:

您仍然可以使用非对称加密:生成公私密钥对,使用私钥加密,客户端(您提到的“应用程序”)可以使用公钥对其进行解密。

当然,公钥(也包括私钥)可用于加密和解密。

但是使用公钥重新加密纯文本会生成与使用私钥加密的密码完全不同的密码。解密用同一个密钥重新加密会产生不同的结果,所以没用。

【讨论】:

  • 不要用私钥加密。用私钥签名
【解决方案2】:

上面 dcastro 所说的绝对正确,你应该给他点赞。我只是想添加它,但还不能评论。如果您使用我们的私钥加密许可信息,并使用应用程序散布您的公钥,您将能够解密许可信息。如果没有私钥,就无法重新加密可以在不使用私钥的情况下使用公钥解密的不同版本的许可证。

非对称加密是这样工作的。

使用公钥加密的信息只能使用私钥解密。 用私钥加密的信息只能用公钥解密。

现在是最重要的。您可能想要使用对称算法加密您的许可证,并使用非对称算法加密解密它所需的密钥。这样,您的许可证数据的长度就不会受到非对称的限制,并且对称密钥可以是客户特定的。

就像我说的,把功劳归功于 dcastro。

【讨论】:

  • 好点。我确实使用AES这样考虑过。好东西把它写在这里:)
  • 谢谢。你把我推到我需要发表评论的地方。
  • 如果您只使用 RSA 加密而不是签名,那将是一种糟糕的风格,但可能是安全的。另一方面,混合加密显然不是一种安全的签名方案。只需提取对称密钥,并使用它来加密将被应用程序接受的新消息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-01-10
  • 1970-01-01
  • 1970-01-01
  • 2012-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多