什么是最安全的加密/解密数据的方法?

3
现在我知道这是一个非常开放的问题,就像“一条绳子有多长”,但我是这个游戏的新手。
从我基本的理解来看(在我深入研究这个主题之前),我相信AES 256位加密非常安全。
我的需求是使用.Net生成私钥和公钥,使用最安全的加密方式。
现在我知道从专家的角度来看,这可能是一个天真的问题,但请帮助我扩展我的知识,并建议在这种类型的项目中考虑的最佳方法、算法和其他任何事项。
非常感谢。

6
直白地说:只要是由编写,它就不会是安全的。正如Bruce Schneier所写:“密码很难。加密很难。密码是易于部分。”学习这个主题并使用高质量的库。你的代码将是薄弱环节,而不是密码本身。 - Kerrek SB
1
你的问题显示出对加密技术缺乏理解。这意味着你将无法正确实现它,而且它肯定会出故障。我经常在加密方面犯错,而我已经从事这个领域多年了。我建议你在尝试干预此类事情之前至少阅读一些关于基本密码学原理的文献。 - Polynomial
基本上,使用Google搜索“asymmetric cryptography c#”就可以开始了。 - oleksii
1
@Jon:不,库几乎肯定是没问题的。我想说的是,只要你对这个主题没有牢固的掌握,你很可能设计出一个系统,其中的缺陷比库中任何弱点都容易被利用得多。(由于这个事实本身就是密码学的第一课,我很想得出结论,你还没有达到那个水平。) - Kerrek SB
2
@KerrekSB - 我想起了旧时KGB破解密码的座右铭:“打断手指比破解代码更容易。” - Polynomial
显示剩余2条评论
3个回答

2
可能没有这样的东西可用。您的加密级别应与与数据相关的风险成正比。请记住,通常由人类创建的任何东西都可以被人类破解。
如果您想使用一对密钥来加密/解密数据,则很可能走上了不对称加密的道路-谷歌它。从.NET的角度来看,您可以查看RSA算法的实现,该算法对于1024 2048位或更大的密钥大小被认为是安全的

在这种情况下,RSA比SHA512更安全吗? - Jon
1
SHA512是一个哈希算法,不是加密(这意味着SHA512只能单向操作)。您将无法从哈希中恢复对象,因为此操作是不可逆的。您可以将AES与RSA进行比较,但这取决于您的目标、数据和过程。 - oleksii
你的问题无法回答。它们两个都是安全的,具体取决于您如何使用它们以及加密哪种类型的数据将决定哪个可以更安全地保护数据。任何您可以解密的数据意味着必须将加密和解密的过程存储在同一位置。这个事实意味着任何拥有该过程访问权限的人都可以解密您的信息。您认为SHA512是一个加密算法的事实证明您需要进行一些额外的研究。 - Security Hound
@oleksii:如果SHA512是单向的,那么这个网站是如何工作的呢?它可以用于加密和解密:http://sha2decrypt.com/ - Bruno
1
@ibiza 发现得好,这其实是一种暴力破解方式,正如关于页面所述 - “SHA2Decrypt提供了一个Web界面,用于访问包含2436860个SHA-2哈希的数据库...”。因此,他们会获取任何字符串,计算哈希值,并为用户快速提供两个字符串的访问。请看看已经可用的字符串数量 - 2436860,这并不算多,考虑到我只有一个100个字符的字符串,这个数据库拥有我的字符串的几率几乎为零,或者用数学术语来说:1 / (256(假设所有可能的ASCII符号)^ 100(100个字符的字符串中的可能组合数))。 - oleksii

0
你不需要使用加密来生成公私钥,它是一个数学操作。然后使用这些键进行加密。
它们如何链接在一起的快速概述是:
  1. 生成密钥。
  2. 然后使用密钥安全地在各方之间交换“密码”。
  3. 然后使用“密码”来加密双方之间的进一步通信。
第二部分将使用哈希和签名等方案来确保通信是真实且未被篡改的。 PKI非常慢,因此尽管在实践中可以使用它来保护通信,但通常仅在开始时使用,然后使用更快的AES等方案。
很多这方面的内容都可以在维基百科上找到,也可以查看Bruce Schneier的作品。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接