C# C语言中的仅解密方法#

C# C语言中的仅解密方法#,c#,cryptography,encryption-asymmetric,C#,Cryptography,Encryption Asymmetric,我正在寻找一种安全的方法来为我的应用程序实现一个带有标志和特性的许可证文件。我在C#中读到了关于非对称密钥机制的内容,但是RSA的用途与我需要的几乎相反 我想生成一个许可证文件:加密密码。应用程序将拥有解密文件的密钥,但无法对其重新加密。无论我在哪里检查,该示例都显示了甲方如何生成公钥和私钥,并将公钥传递给乙方,以便乙方可以使用公钥进行加密。可能在两条线之间,但我看不见 我检查了这个,然后呢 我可以找到一种方法来使用我看到的代码来实现它,但我不确定它是否真正安全。您仍然可以使用非对称加密:生成一

我正在寻找一种安全的方法来为我的应用程序实现一个带有标志和特性的许可证文件。我在
C#
中读到了关于
非对称密钥
机制的内容,但是
RSA
的用途与我需要的几乎相反

我想生成一个许可证文件:加密密码。应用程序将拥有解密文件的密钥,但无法对其重新加密。无论我在哪里检查,该示例都显示了甲方如何生成公钥和私钥,并将公钥传递给乙方,以便乙方可以使用公钥进行加密。可能在两条线之间,但我看不见

我检查了这个,然后呢


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

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

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


但使用公钥重新加密纯文本将生成与使用私钥加密的密码完全不同的密码。用同一个密钥解密和重新加密会产生不同的结果,因此它是无用的。

dcastro上面说的绝对正确,你应该相信他。我只是想补充一下,但还不能发表评论。如果您使用我们的私钥加密许可证信息,并在应用程序中分发公钥,则可以解密许可证信息。如果没有私钥,就不可能重新加密不同版本的许可证,该许可证可以在不使用私钥的情况下使用公钥解密

不对称加密是这样工作的

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

现在轮到踢球的人了。。您可能希望使用对称算法加密许可证,并使用非对称算法加密解密许可证所需的密钥。这样,许可证数据的长度就不受非对称密钥的限制,对称密钥可以是特定于客户的


就像我说的,要归功于dcastro

说得好。我确实是用AES这样想的。把它写在这里是件好事:)谢谢。你把我推到了我需要评论的地方。如果你只使用RSA加密而不是签名,这可能是不好的风格,但可能是安全的。另一方面,混合加密显然不是一个安全的签名方案。只需提取对称密钥,并使用它加密应用程序将接受的新消息。我认为您实际上想要的是签名,而不是加密/解密。@CodesInChaos:您能解释一下吗?我不熟悉“签名”流程,所以我看了看:1。我应该签署什么(可能不是纯文本)。我需要签署类似这样的内容:“num=10;enable_feature=1”2。如何保护客户端的密钥?不要使用私钥加密。用私钥签名。