加密哈希函数
加密哈希函数在整个以太坊使用。事实上,哈希函数几乎在所有密码系统中都有广泛应用,这是密码学家布鲁斯•施奈尔(Bruce Schneier)所说的一个事实,他说:“单向哈希函数远不止于加密算法,而是现代密码学的主要工具。
在本节中,我们将讨论哈希函数,了解它们的基本属性以及这些属性如何使它们在现代密码学的很多领域如此有用。我们在这里讨论哈希函数,因为它们是将以太坊公钥转换成地址的一部分。
简而言之,“哈希函数是可用于将任意大小的数据映射到固定大小的数据的函数。” Source:Wikipedia。哈希函数的输入称为 原象 _ pre-image_ 或 消息 message。输出被称为 哈希 hash_或 _摘要 digest。哈希函数的一个特殊子类别是 加密哈希函数,它具有对密码学有用的特定属性。
加密哈希函数是一种_单向_哈希函数,它将任意大小的数据映射到固定大小的位串,如果知道输出,计算上不可能重新创建输入。确定输入的唯一方法是对所有可能的输入进行蛮力搜索,检查匹配输出。
加密哈希函数有五个主要属性 (Source: Wikipedia/Cryptographic Hash Function):
确定性
任何输入消息总是产生相同的哈希摘要。
可验证性
计算消息的哈希是有效的(线性性能)。
不相关
对消息的小改动(例如,一位改变)会大幅改变哈希输出,以致它不能与原始消息的哈希相关联。
不可逆性
从哈希计算消息是不可行的,相当于通过可能的消息进行蛮力搜索。
碰撞保护
计算两个不同的消息产生相同的哈希输出应该是不可行的。
碰撞保护对于防止以太坊中的数字签名伪造至关重要。
这些属性的组合使加密哈希函数可用于广泛的安全应用程序,包括:
数据指纹识别
消息完整性(错误检测)
工作证明
认证(密码哈希和密钥扩展)
伪随机数发生器
原象承诺
唯一标识符
通过研究系统的各个层面,我们会在以太坊找到它的很多应用。