Hash 如何使用哈希值>;=如果大多数计算机只能寻址不超过64位的值,安全性为160位(例如SHA-1)?

Hash 如何使用哈希值>;=如果大多数计算机只能寻址不超过64位的值,安全性为160位(例如SHA-1)?,hash,cryptography,Hash,Cryptography,这就是困惑:在密码学中,我们对大于等于160位的散列使用巨大的值。如果大多数计算机只能寻址64位或32位,我们如何处理这些值 您的帖子有174字节大,即1392位。计算机用它做了各种各样的事情,所以我现在可以舒服地坐在椅子上阅读你的文章。这并不令人费解,是吗 你提到算术溢出。这让我想到了一个假设,你认为CPU中的算术电路在某种程度上是特殊的。他们不是。给我循环、内存和基本逻辑运算(and、or、not),我就能在内存所能容纳的数字上实现各种算术运算。它可能没有优化的硬件那么有效,但它可以工作。(

这就是困惑:在密码学中,我们对大于等于160位的散列使用巨大的值。如果大多数计算机只能寻址64位或32位,我们如何处理这些值

您的帖子有174字节大,即1392位。计算机用它做了各种各样的事情,所以我现在可以舒服地坐在椅子上阅读你的文章。这并不令人费解,是吗

你提到算术溢出。这让我想到了一个假设,你认为CPU中的算术电路在某种程度上是特殊的。他们不是。给我循环、内存和基本逻辑运算(and、or、not),我就能在内存所能容纳的数字上实现各种算术运算。它可能没有优化的硬件那么有效,但它可以工作。(如果数字只比硬件所能处理的数字大几倍,则速度只会慢几倍。)


此外,散列和分组密码中使用的大多数操作都是按位操作(位移位、旋转、异或等),甚至不需要上述任何操作。事实上,如果您仔细观察,您会发现它只对状态的单个32位块执行操作。

有一个误解。寻址内存和将其存储在寄存器中是两件不同的事情。@Artjom是的,但是有算术溢出,对吧……你在说什么算术溢出?当散列运行时,散列程序的整个内部状态并不是一直加载到寄存器中。您在理解CPU如何计算大于其寄存器的值时有困难吗?也许您应该研究哪些不一定适用于散列算法请参见: