首先,我知道AES是块密码而不是哈希函数。但是,由于我的微控制器RAM和闪存非常有限,因此已经在其上实现了AES-128并用于其预期目的 - 加密。
不幸的是,我还需要在同一微控制器上实现用于文件完整性检查的哈希函数。鉴于资源有限,我想知道是否可以使用现有的AES算法来代替MD5进行哈希。一种可能的方法是:
1. 使用虚拟密钥(例如全零)加密文件的第一个块。 2. 使用前一个加密块作为密钥加密下一个块。 3. 重复此过程,直到处理完文件中的所有数据。 4. 将最后一个加密块用作哈希值。
理论上,我认为这应该可以工作。如果文件中存在任何损坏的数据,则会导致所有后续块的差异。
现在,重要的问题是:从碰撞的角度来看,这种方法的表现如何?或者换句话说:最终的“哈希”分布情况如何?
不幸的是,我还需要在同一微控制器上实现用于文件完整性检查的哈希函数。鉴于资源有限,我想知道是否可以使用现有的AES算法来代替MD5进行哈希。一种可能的方法是:
1. 使用虚拟密钥(例如全零)加密文件的第一个块。 2. 使用前一个加密块作为密钥加密下一个块。 3. 重复此过程,直到处理完文件中的所有数据。 4. 将最后一个加密块用作哈希值。
理论上,我认为这应该可以工作。如果文件中存在任何损坏的数据,则会导致所有后续块的差异。
现在,重要的问题是:从碰撞的角度来看,这种方法的表现如何?或者换句话说:最终的“哈希”分布情况如何?