由于相同的 SHA1 和 MD5 但不同的 SHA256 导致“哈希和不匹配”错误

Rya*_*uey 16 apt md5sum sha256

在运行时apt full-upgrade或者apt update我得到几个与这个或多或少相同的日志,其中有相同的文件大小、SHA1 和 MD5 但不同的 SHA256:

E: Failed to fetch store:/var/lib/apt/lists/partial/jp.archive.ubuntu.com_ubuntu_dists_focal_main_binary-amd64_Packages.xz  Hash Sum mismatch
   Hashes of expected file:
    - Filesize:5826751 [weak]
    - SHA256:af226b4496cbb524bd4814d102047ae77769836203274dffc91cb543d5da13cc
    - SHA1:aef5c36ce45bd5c3154a1bb03c62b6cfb33e2bc6 [weak]
    - MD5Sum:7ef83228ec207df10acac48fbdd81112 [weak]
   Hashes of received file:
    - SHA256:e2c7fc5a2d86f75f03612fec614dcf84d3d502976558fbe40928c1dd120bb05e
    - SHA1:aef5c36ce45bd5c3154a1bb03c62b6cfb33e2bc6 [weak]
    - MD5Sum:7ef83228ec207df10acac48fbdd81112 [weak]
    - Filesize:5826751 [weak]
   Last modification reported: Thu, 23 Apr 2020 16:40:26 +0000
   Release file created at: Thu, 23 Apr 2020 17:33:17 +0000
Run Code Online (Sandbox Code Playgroud)

而其他人具有相同的 MD5,但不同的 SHA1 和 SHA256:

E: Failed to fetch http://jp.archive.ubuntu.com/ubuntu/pool/main/l/linux/linux-headers-5.4.0-29_5.4.0-29.33_all.deb  Hash Sum mismatch
   Hashes of expected file:
    - SHA256:edde13dcd52c51e2404d37731948d491e6e215b22f599239326809754f8d5633
    - SHA1:3e46354d6aaa92f82d5392a80f6b72c3fcc78a91 [weak]
    - MD5Sum:4ccf38c666c836f29fc3602314de47b9 [weak]
    - Filesize:10936232 [weak]
   Hashes of received file:
    - SHA256:9af606f85850ba3010ac8743f62dca91bbef3e5e60da5a7df62dac53eb5a4fb7
    - SHA1:61c842d896676ac9af0fef9f9f48bc4a3c39cce6 [weak]
    - MD5Sum:4ccf38c666c836f29fc3602314de47b9 [weak]
    - Filesize:10936232 [weak]
   Last modification reported: Thu, 30 Apr 2020 08:23:38 +0000

Run Code Online (Sandbox Code Playgroud)

这个问题类似于这里提出的问题,确实我尝试了那里(和其他地方)提供的几种解决方案,但它们没有帮助。但是我特别想知道为什么 SHA-1 和 MD5Sum 是相同的,而只有 SHA256 不同。这是否意味着沿线某处存在安全问题?还是我的系统错误地读取了 SHA256?还有什么?

谢谢

小智 41

在运行 apt 之前试试这个:

$ sudo bash
# mkdir /etc/gcrypt
# echo all >> /etc/gcrypt/hwf.deny
Run Code Online (Sandbox Code Playgroud)

因为 apt 使用 libgcrypto20 中的 sha256 方法,但是优化太多了。我们可以拒绝这个选择。使用配置文件/etc/gcrypt/hwf.deny

  • 刚刚在 Oracle VM VirtualBox 的 Windows 10 安装中托管的 Ubuntu 20.04 中测试了此解决方案。在此之前没有任何工作,甚至试图禁用 wsl。 (2认同)
  • 为我工作!Windows 10 主机(这个东西被最新的 Windows 更新破坏了),Ubuntu 20.04 来宾。没有禁用 WSL 或任何东西 - 这个解决方案有效。 (2认同)
  • 好奇地问:这到底是做什么的?它确实解决了这个问题,但读起来好像我会禁用所有(?)检查从安全角度听起来不太好的东西。 (2认同)

Mar*_*ski 11

如果您使用的是 Windows 和 VirtualBox,请禁用适用于 Linux 和虚拟机平台的 Windows 子系统。尝试使用 VirtualBox 6.0.4 安装 lubuntu 20.04 并且启用了 WSL2 时发生在我身上。

  • 如果启用,VirtualBox 将使用所谓的“虚拟机平台”作为虚拟化提供程序。我不知道为什么会发生这种情况,但是对我来说,在运行 `apt update` 时,我只得到了不匹配的 SHA256 - SHA1 和 MD5 是相同的。这让我知道这个版本的虚拟机平台存在一个错误,并且由于某种原因 SHA256 计算不正确。这只是我的猜测,因为它为我解决了这个问题。https://forums.virtualbox.org/viewtopic.php?f=6&t=92440 当它不起作用时我得到了“海龟图标” - 因此我猜测这会改变虚拟 CPU 的行为方式。 (4认同)
  • 非常感谢……这正是我真正需要的。我也摆脱了我的绿海龟。在此处发布此链接以获得更完整和最新的解释和一组说明:https://forums.virtualbox.org/viewtopic.php?f=6&t=90853&sid=dd153bd7f58ac95966ee195414bdf7a5&start=270#p476261 (2认同)

小智 8

解释和解决方案:快速修复

此问题是由 Windows 管理程序平台引起的。这个问题暂时无法解决(据我所知)。

不过,部分修复即将到来。我说“部分”是因为它涉及禁用平台(也称为“Hyper-V”),这可能会破坏您安装的其他虚拟化解决方案,因为这是手动启用的。无论如何,这是禁用它并使您的VM再次运行的方法,

  1. 关闭虚拟机。

  2. 按 Windows 徽标键 + X,然后按 A 以管理员身份运行命令提示符(powershell)。

  3. 键入 bcdedit /set hypervisorlaunchtype off

4.当您看到“操作成功完成”时,重新启动您的Windows。重新启动后,启动您的 VM 并更新/升级。