【问题标题】:PRIVATE key encryption in .Net.Net 中的私钥加密
【发布时间】:2011-08-14 14:33:23
【问题描述】:

我正在寻找一种在 C# 中进行私有密钥加密的方法。

我以为我可以使用 RSACryptoServiceProvider,但它只支持 public 密钥加密。

我在这个主题上找到的唯一东西是这个项目,但我宁愿使用我可以在 .net 中找到的东西:http://www.codeproject.com/KB/security/PrivateEncryption.aspx

请注意,我不是在寻找签名。

请注意我要求非对称加密。

有什么想法吗?

背景故事:

我正在向另一个正在运行应用程序的系统发送加密文件。加密确保文件不能被任何人更改(或多或少)或查看。应用程序能够使用公钥解密文件并对其进行处理。

我知道几乎任何人都可以从应用程序中获取公钥,在这种情况下这不是问题。

【问题讨论】:

  • 如果你不做签名,但你想用私钥加密,那么你到底想达到什么目的?
  • 私钥加密是什么意思?根据您的强调,我只建议使用 RSA 并将两个密钥保密,“公钥”和“私钥”只是该设置中的名称。
  • 如果它是可以被公钥反转的东西,那么假设公钥只有一个操作 - 加密 - 逆不只是解密操作吗?即您尝试“解密”纯文本以生成私钥加密数据
  • @Ben,加密数据发送到知道公钥的地方,因此应该能够解密数据,但不能加密。 @Stephan,这意味着公钥不能保持私密。
  • 即使你坚持不这样做,你所描述的就是签名。

标签: c# .net encryption encryption-asymmetric


【解决方案1】:

加密确保文件不能被任何人更改或查看

公钥加密 - “按规定”完成时 - 将加密和签名分开(“无法更改”)。在您的情况下,使用两个密钥对,一个在应用程序内,一个在您的站点。使用公共应用程序密钥加密文件并使用您的私人密钥对文件进行签名。

这是一个非常普遍的用法,我什至喜欢称它为“最佳实践”。至于否决票,我只能猜测排除在您的问题上签名会触发此问题。

【讨论】:

  • 错误,是的。不改变不是正确的词,但你明白了。在这种情况下,我可以理解签约是最好的做法,但如果我想走那条路,我不会问这个问题。
  • @SaphuA 所以你想忽略一个众所周知和理解的最佳实践。对不起,我不明白,也许你可以告诉我们为什么不能签名?这听起来有点像“滚动你自己的加密货币”,这总是一个坏主意:(
  • 因为读取文件应该是困难的,而不是不可能的。
【解决方案2】:

不应该这样做。改为签名并使用对称加密。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-21
    • 1970-01-01
    • 1970-01-01
    • 2013-04-06
    • 2018-02-27
    • 2011-03-20
    • 1970-01-01
    相关资源
    最近更新 更多