Alice只需要记住原始文件的hash值。当她之后从SecureBox下载文件时,她会计算下载的文件的hash值并将其与存储的文件进行比较。如果哈希值是相同的,那么她可以得出结论,文件确实是她上传的;如果它们不同,那么Alice可以断定该文件已被篡改。因此,记住哈希可以让她在传输过程中或在SecureBox的服务器上检测文件的意外损坏,而且还可以由服务器义务修改文件。这是加密技术为我们提供保证的核心。
Hash用作消息的固定长度摘要或明确的摘要。这给了我们以一个非常有效的方式来记住我们以前看到的事情,并再次认出它们。而整个文件可能已经是千兆字节长,hash却是固定的长度,例如256位字节。这大大降低了我们的存储需求。在本章后面和整本书中,我们将看到使用哈希则没有可行的方法来确定输入x是什么。问题是,该属性不能以声明的形式存在。考虑以下简单的例子:我们要做一个掷硬币的实验。如果硬币翻转的结果是头,我们要宣布字符串的哈希值是“头”。如果结果是尾,那么我们要宣布字符串的哈希值是“尾”。
然后我们问一个没有看到硬币翻转,只看到哈希输出值的对手,让他弄清楚字符串是散列的(我们很快就会知道为什么我们可能想玩这样的游戏)。作为回应,他们将简单地计算字符串“头”和字符串“尾”的哈希值,并且他们可以看到他们被给予了哪一个。所以,在短短几步之后,他们可以弄清楚输入的是什么。