基本上,我想知道当今最强(最难破解)的加密算法是什么。哈希算法也是如此。假设我也选择了一个超强密码(额外:使用加密算法的安全密码有多长?),用于加密算法部分。我不关心它需要多长时间,也不关心它是否是当今的“标准”(例如:我听说 AES 是“标准”,但它不是最安全的算法),只要它是不可破解的就行。
更新:我知道这是一个非常笼统的问题,所以让我稍微缩小一下范围。假设我试图安全地与某人通信,或者我只是不想让任何人解密我的文本,并且我希望它尽可能安全。我应该考虑哪种加密算法、密钥大小是多少、位大小是多少以及我应该使用哪种特定算法?散列也是如此。
更新:为了进一步缩小范围,我们假设本例中的“鲍勃”拥有一个只有他自己知道的私钥。假设世界上每个人都获得了加密消息的副本,但只有“鲍勃”才能解密。
(我意识到这可能听起来有点可疑,但这都是假设的情况。)
答案1
这个问题确实无法回答。算法“强度”没有通用的概念。强度本质上是对攻击的抵抗力。由于攻击有不同类别,强度取决于您需要抵抗哪些攻击。如果您没有要求,您可以使加密或散列算法的强度没有限制。诀窍是找到满足特定要求的最强(或足够强)算法。
在某些应用程序中,特定的“攻击”无关紧要,因为它们不会影响要求。例如,可能存在一种哈希算法,它可以非常非常有效地抵御所有长度扩展攻击。这可能使其成为长度扩展攻击无关紧要的应用程序(例如签名哈希)的最强算法,但完全不适合长度扩展攻击重要的应用程序(例如 API 密钥)。
此外,加密算法的种类也完全不同,特性也大不相同。例如,加密算法有对称加密算法和非对称加密算法。
更新 1:您仍然没有向我们提供最基本的信息。要使加密起作用,目标接收者应该拥有或知道一些其他人不知道或没有的东西,以便他们(也只有他们)能够解密消息。如果不知道那可能是什么,就无法知道要查看哪一类算法。如果没有要求,答案可能是一次性密码本,尽管这几乎总是完全不切实际的。