如果大多数计算机只能寻址不超过 64 位的值,我们如何在安全性中使用 >= 160 位的哈希值(例如 SHA-1)?
How can we use hash values >= 160 bits (e.g SHA-1) in security if most computers can address only values no more than 64 bits?
所以这就是混乱所在:在密码学中,我们为 >= 160 位的散列值使用巨大的值。如果大多数计算机只能寻址 64 位或 32 位,我们如何操作这些值?
您的 post 有 174 个字节大,即 1392 位。电脑用它做了各种各样的事情,所以我现在可以坐在舒适的椅子上阅读你的作品。这并不令人费解,是吗?
你提到算术溢出。这使我假设您认为我们 CPU 中的算术电路在某种程度上是特殊的。他们不是。给我循环、内存和基本逻辑运算(与、或、非),我可以对内存可以容纳的大数字执行各种算术运算。它可能不如优化后的硬件那么高效,但它确实有效。 (对于仅比硬件可以处理的数字大几倍的数字,它只会慢几倍。)
此外,散列和分组密码中使用的大多数运算都是按位运算(移位、旋转、异或等),甚至不需要上述任何运算。事实上,如果您查看 SHA-1 code,您会发现它仅对状态的各个 32 位块执行操作。
所以这就是混乱所在:在密码学中,我们为 >= 160 位的散列值使用巨大的值。如果大多数计算机只能寻址 64 位或 32 位,我们如何操作这些值?
您的 post 有 174 个字节大,即 1392 位。电脑用它做了各种各样的事情,所以我现在可以坐在舒适的椅子上阅读你的作品。这并不令人费解,是吗?
你提到算术溢出。这使我假设您认为我们 CPU 中的算术电路在某种程度上是特殊的。他们不是。给我循环、内存和基本逻辑运算(与、或、非),我可以对内存可以容纳的大数字执行各种算术运算。它可能不如优化后的硬件那么高效,但它确实有效。 (对于仅比硬件可以处理的数字大几倍的数字,它只会慢几倍。)
此外,散列和分组密码中使用的大多数运算都是按位运算(移位、旋转、异或等),甚至不需要上述任何运算。事实上,如果您查看 SHA-1 code,您会发现它仅对状态的各个 32 位块执行操作。