encryption - 使用 AES 进行文件完整性检查,替换 MD5

标签 encryption md5 hash aes

首先:我知道 AES 是分组密码而不是散列函数。但是,我坚持使用 RAM 和闪存很少的微 Controller ,并且 AES-128 已经在其上实现并用于其预期目的 - 加密。

不幸的是,我还必须在同一个微 Controller 上实现用于文件完整性检查的散列函数。鉴于资源有限,我想知道是否可以使用现有的 AES 算法而不是 MD5 进行散列。这样做的一种可能性是:

  • 使用虚拟 key (例如全零)加密文件的第一个块
  • 使用前一个加密块作为 key 加密下一个块
  • 继续这样,直到处理完文件中的所有数据
  • 使用最后一个加密块作为哈希

  • 从理论上讲,我认为这应该有效。如果文件中的任何地方都存在损坏的数据,则会导致所有后续块中出现差异。

    现在,最大的问题是:这种方法在碰撞方面的表现如何?或者换一种说法:最终的“散列”分布情况如何?

    最佳答案

    听起来您想使用 AES-CMAC ,一种基于 AES 的认证算法。

    关于encryption - 使用 AES 进行文件完整性检查,替换 MD5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4633949/

    相关文章:

    java rsa加密SSLSocket、android转java问题

    c# - 如何在 C# 和 Java 中生成相同的 MD5 哈希码?

    c# - 在 C# 和 SQL Server 2008 R2 中使用 MD5

    java - 在HashSet中插入对象的条件?

    javascript - 在jquery中添加哈希

    Java 类对象哈希更改无需更改源代码

    java - 在配置文件中加密密码?

    python - 将 RIJNDAEL 256 函数从 .Net 转换为 Python

    ssh - 在用户密码处使用 md5 (OpenLDAP)

    c++文本解码器解码超过要求