哈希在计算机科学中至关重要,并提供了广泛的能力和功能。此外,哈希在嵌入式软件开发人员验证和保护嵌入式系统方面发挥着重要作用。这篇文章将研究加密哈希的基础知识,并提供嵌入式开发人员可以用来开始理解嵌入式安全性的基础。
让我们从查看哈希的定义开始。散列是散列函数根据提供给函数的输入生成的值。散列用于提供一个值,该值可以验证信息的完整性,而无需将该信息透露给执行验证的一方。因此,例如,开发人员可以通过散列函数运行他们的软件映像,以生成一个散列值,客户或最终用户可以验证他们是否收到了正确的软件映像。
开发人员应将哈希视为数据的唯一数字指纹。哈希函数的好处是最终用户可以通过将他们的哈希与官方生成的哈希进行比较来验证他们是否拥有正确的软件。尽管如此,散列值仍不能用于生成信息,该过程是单向的,这提供了一种简单的验证方法,无需透露细节。
几种不同的散列函数用于生成散列,有时称为散列码或散列值。一些常见的哈希值包括:
MD5 (120-bit)
SHA-1 (160-bit)
SHA-3 (224-bit, 256-bit, 512-bit)
当为输入数据生成散列时,会生成固定数量的输出位。例如,常用的加密散列 SHA-1(安全散列算法 1)产生 160 位值。嵌入式开发人员可以通过将他们的数据输入他们的 SHA-1 生成器或尝试使用在线生成器来生成 SHA-1 哈希。例如,简单的数据,如“Hello World!”生成下面的哈希:
SHA-1(“Hello World!”) = 2ef7bde608ce5404e97d5f042f95f89f1c232871
哈希在嵌入式中扮演着几个不同的角色。首先,引导加载程序可以使用哈希来验证他们收到的软件映像是否确实正确。其次,哈希可以用作安全