C# 加密/解密数据的最安全方式是什么?

C# 加密/解密数据的最安全方式是什么?,c#,.net,security,encryption,.net-4.0,C#,.net,Security,Encryption,.net 4.0,现在我知道这是一个非常开放的问题,比如“一根绳子有多长”,但我是这个游戏的新手 根据我的基本理解(在我深入研究这个主题之前),我相信AES 256bit加密是非常安全的 我的需求是使用.Net生成私钥和公钥,并尽可能使用最安全的加密 现在我从专家的角度来看,这可能是一个天真的问题,但请帮助我扩大我的知识,并提出最佳的方法,算法和任何其他考虑在这类项目。 非常感谢。生成公钥/私钥不需要加密。这是一个数学运算。然后将密钥用于加密 简单介绍一下它们是如何联系在一起的 生成密钥 然后使用这些密钥在双方之

现在我知道这是一个非常开放的问题,比如“一根绳子有多长”,但我是这个游戏的新手

根据我的基本理解(在我深入研究这个主题之前),我相信AES 256bit加密是非常安全的

我的需求是使用.Net生成私钥和公钥,并尽可能使用最安全的加密

现在我从专家的角度来看,这可能是一个天真的问题,但请帮助我扩大我的知识,并提出最佳的方法,算法和任何其他考虑在这类项目。
非常感谢。

生成公钥/私钥不需要加密。这是一个数学运算。然后将密钥用于加密

简单介绍一下它们是如何联系在一起的

  • 生成密钥
  • 然后使用这些密钥在双方之间安全地交换“密码”
  • 然后,“密码”用于加密双方之间的进一步通信
  • 第2部分将使用散列和签名等方案来确保通信的真实性和不受干扰。 PKI的速度非常慢,因此,尽管您实际上可以使用它来保护通信安全,但它通常只在开始时使用,然后使用AES等更快的方案


    维基百科上应该有很多这样的内容,也可以看看布鲁斯·施奈尔的作品。

    可能没有这样的内容。加密级别应与与数据关联的线程成比例。请记住,通常任何由人类创造的东西都可能被人类打破


    如果您想使用一对密钥对数据进行加密/解密,那么您很可能正走在非对称加密的道路上。从.NET的角度来看,您可以了解的实现,其密钥大小为1024 2048位或更多

    AES是一种对称算法——意味着一个密钥。。。如果需要密钥对,请查找RSA库。。。。快速谷歌搜索提供以下链接:


    坦率地说:只要你这么做,它就不会安全。正如布鲁斯·施奈尔(Bruce Schneier)所写:“密码很难。密码学很难。密码是容易的部分。”了解这个主题并使用高质量的库。您的代码将是薄弱环节,而不是密码。您的问题表明您对密码缺乏了解。这意味着您将无法正确实现它,它将被破坏。我总是把密码搞错,而且我已经做了很多年了。我建议你在尝试处理这些事情之前,至少阅读一些关于基本密码原理的文献。@KerrekSB你是说像.Net库这样的东西很弱吗?@Jon:不,库几乎肯定很好。我想说的是,只要你没有对这个主题有一个坚定的把握,你很可能设计出一个比图书馆中任何弱点都更容易利用的系统。(因为这个事实本身就是密码学的第一课,我很想得出结论,你还没有达到那个水平。)@KerrekSB-我想起了克格勃破译密码的古老格言:“折手指比破译密码容易”。在这种情况下,RSA比SHA512更安全?SHA512是一种哈希算法,而不是加密(意味着SHA512只是一种方式)。您将无法从哈希还原对象,因为此操作是不可逆的。您可能可以将AES与RSA进行比较,但这取决于您的目标、数据和进程。您的问题无法回答。它们都是安全的,具体取决于您使用它们的方式以及加密将确定哪一种数据将保护它们他需要更多的数据。任何可以解密的数据都意味着必须将进程存储在同一位置进行加密和解密。这一事实意味着任何有权访问该进程的人都可以解密您的信息。事实上,您认为SHA512是一种加密算法,这证明您应该做一些额外的研究。@oleksii:如果SHA512只是一种方式,这是怎么回事网站工作正常吗?它可以用来加密和解密:@ibiza发现得很好,这真是蛮力,正如它在关于页面中所说——“SHA2Decrypt提供了一个包含2436860个SHA-2哈希的数据库的web界面…”。因此,他们可以获取任意字符串,计算哈希值,并让用户快速访问这两个字符串。请查看现有字符串的数量-2436860这算不了什么,因为我有一个只有100个字符的字符串,因此此数据库拥有我的字符串的可能性几乎为零,或者用数学的话来说:1/(256)(假设所有可能的ASCII符号)^100(100个字符串中的可能组合)