gpt4 book ai didi

security - 散列真的是一个不可逆转的过程吗?

转载 作者:行者123 更新时间:2023-12-04 11:04:57 24 4
gpt4 key购买 nike

我一直在使用哈希和 RSA(在非常肤浅的层面上,例如:SSH 连接上的 RSA 身份验证),我想了解更多相关信息。

首先,我知道加密是一个可以恢复的双向过程。散列是一种不可逆转的单向过程。

最后一点对我来说没有意义,如果我使用算法来散列“你好”,不会是相同的算法,而是“反转”(意思是,它“向后”工作),能够转换该散列再次“你好”。

编辑:

感谢 @GeorgDangl、@klutt 和 Pete Kirkham 指出我根本不理解“不可逆数学”的概念。这些例子真的很有帮助。

最佳答案

从某种意义上说,这是不可逆的,对于每个输入,您只有一个输出,而不是相反。有多个输入产生相同的输出。
对于任何给定的输入,有很多(实际上是无限的)不同的输入会产生相同的哈希值。这很容易实现,因为输出具有固定大小,但输入没有大小限制。
为了实现这一点,使用了不可逆的数学。例如,很容易计算10%3 .答案很简单 10%3=1 .但如果我给你等式 x%3=1 , 你会怎么做?此等式适用于所有 x=3*k+1 .因此,您无法获得我开始使用的数字。
不可逆数学的另一个例子是正弦和余弦。例如,cos(0)=1 ,但有更多的输入值计算为 1。实际上,cos(n*2pi)=1 .这些函数存在“逆”,但它们要么给出某个范围内的答案,要么给出多值答案。第三个例子是 x²=1 .这对于 x=1 都是如此和 x=-1 .但是,在此示例中,您得到的可能答案数量有限(而且相当少)。
在处理加密时,可以说私钥用于选择正确的解决方案。您总是可以非常轻松地解密加密消息,但您会得到大量可能的答案。 key 用于找到正确的 key ,而不是实际解密。
另一件值得一提的事情是,一个好的散列算法可以最小化冲突,即两个输入生成相同的散列。此外,当涉及到密码学时,您希望它尽可能难以逆转。但这也伴随着算法是 CPU 密集型的成本。
一个非常基本且不安全的哈希算法可能如下所示:

hash = 0
for each byte in input:
hash = hash + byte
这里我假设 hash是一个简单的整数变量,当涉及到它的最大值时会环绕。该算法易于实现,而且速度很快。但是如果安全性很重要,您就不想使用它。修改文件通常很容易,这样哈希检查就不会检测到它。
真正的加密散列算法力求实现如果改变的特性 任何 输入中的一位, 输出中的单个位有 50% 的机会翻转。此外,如果你翻转输入中的两位,输出中翻转的位将与如果你只是一个一个地改变位将翻转的位完全无关。
我找到了一个关于这个主题的很好的 YouTube 视频: https://www.youtube.com/watch?v=yoMOAIzBSpY

关于security - 散列真的是一个不可逆转的过程吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47017606/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com