首页 > 解决方案 > 有没有办法对给定的 Nuget 包进行校验和?

问题描述

我一直在寻找一种方法来检查文件是否未被篡改。Nuget 包有校验和吗?

标签: nugetchecksum

解决方案


是的,NuGet 包确实有校验和。根据此链接<packageId>.<packageVersion>.nupkg.sha512包含 .nupkg 文件本身的哈希值。由于上传到 nuget.org 的包不久前开始进行 repo-signed,还有一个名为的单独文件.nupkg.metadata,其中包含应用签名本身之前文件的哈希值。

然而,包含上述 2 个哈希的文件是在从 nuget.org 检索 .nupkg 文件并由 NuGet 客户端安装之后生成的,这有点让人无法检查下载的 .nupkg 是否在第一次被篡改地方。

那么如何保证文件的完整性呢?通过一个名为 的签名文件.signature.p7s,它本身存储在 .nupkg 文件中。使用此文件中信息的方法是根据nuget.exe verify -all <nupkg_file>上面的最新链接发出一个 (可以从此处下载 nuget.exe )。

以下是一个被篡改的文件的结果(对于测试,我使用了CommandLineParser NuGet 包并license.md从 .nupkg 文件中删除了它的文件):

在此处输入图像描述


推荐阅读