|
|
1
2
本质上,散列是一个单向(不可逆)过程,它获取一些输入数据并生成一个固定长度的字符串(通常为十六进制),该字符串唯一地*标识特定的输入数据。 这非常有用,有很多应用程序,但在您的情况下,它用于验证文件的完整性。网站上传一个文件的哈希以供世界查看,当文件下载到您的计算机上时,您可以检查本地计算的哈希是否与网站上显示的哈希匹配。如果匹配,则文件是完整的,但如果不匹配,则计算机上的文件与服务器上的文件不完全相同,很可能是因为它在传输过程中被损坏/更改。
至少在*nix系统上,有几种比较哈希的方法。没有什么可以阻止您手动检查两个哈希的每个字符是否相等-当您只想检查单个文件时,这通常很快。无论如何,大多数哈希程序都有
要计算哈希并生成包含哈希和文件路径+文件名的文件(echo.sha1):
微软显然提供了 The File Checksum Integrity Verifier 为了相同的目的。我在Linux上,还没有测试过它,但描述说: “文件校验和完整性验证程序(FCIV)是一个命令提示符实用程序,用于计算和验证文件的加密哈希值。FCIV可以计算MD5或SHA-1加密哈希。这些值可以显示在屏幕上,也可以保存在XML文件数据库中,以供以后使用和验证。” 我不同意微软使用这个短语 “加密哈希” 在此背景下;也许这个程序已经过时了。无论如何,为了记录在案, MD5和SHA1不是加密安全的哈希算法 。但是,它们对于快速进行文件完整性检查非常好。
你确实可以。事实上,无法验证文件的完整性 没有 在计算机上计算哈希值,这是过程的一部分。 要在Linux/Unix上获取文件的sha1总和(在本例中再次是“echo”二进制文件),您可以简单地执行以下操作:
还有其他SHA哈希长度:
MD5长期用于相同的目的,有时仍然是(但同样,不要将MD5或SHA1用于加密):
正如您在下面看到的,它也适用于字符串。这个
如果您运行服务器并想进行密码登录,通常不存储实际密码,而是存储密码的散列。在这种情况下,添加 salt 在散列之前更改密码,并使用当前推荐的散列算法- bcrypt 是2016年的一个好选择。 我可以继续谈论校验和、加密哈希、加密、彩虹表、哈希冲突等等,但这超出了你的问题范围。
|
|
|
FabioLovi · SHA-RSA是如何工作的? 9 年前 |
|
|
user2508324 · SHA-256实现的输出不正确 10 年前 |
|
|
Jesus Fernandez · 使用SHA-256在Python中处理字节 10 年前 |
|
|
Nits · SHA-1校验和验证? 10 年前 |
|
|
alias_neo92 · 如果我知道部分输入,破解SHA1是否会更容易? 10 年前 |
|
|
Billy Moon · 数字签名的标准格式 13 年前 |
|
|
Anton Apua Escalante · 哈希加盐 13 年前 |