有没有办法对给定的 Nuget 包进行校验和?
Is there a way to do a checksum for a given Nuget package?
我一直在寻找一种方法来检查文件是否未被篡改。 Nuget 包有校验和吗?
是的,NuGet 包确实有校验和。根据 this link, <packageId>.<packageVersion>.nupkg.sha512
contains the hash of the .nupkg file itself. As the packages uploaded on nuget.org started being repo-signed a while ago,还有一个名为 .nupkg.metadata
的单独文件,其中包含应用签名本身之前文件的哈希值。
然而,包含上述 2 个哈希值的文件是在 之后生成的。从 nuget.org 检索 .nupkg 文件并由 NuGet 客户端安装,这有点让首先无法检查下载的 .nupkg 是否未被篡改。
那么如何保证文件的完整性呢?通过名为 .signature.p7s
的签名文件,它本身存储在 .nupkg 文件中。使用此文件中的信息的方法是根据上面最新的 link 发布 nuget.exe verify -all <nupkg_file>
(nuget.exe 可以从 here 下载)。
这是一个被篡改的文件的结果(为了测试,我使用了 CommandLineParser NuGet 包并将其 license.md
文件从 .nupkg 中删除文件):
我一直在寻找一种方法来检查文件是否未被篡改。 Nuget 包有校验和吗?
是的,NuGet 包确实有校验和。根据 this link, <packageId>.<packageVersion>.nupkg.sha512
contains the hash of the .nupkg file itself. As the packages uploaded on nuget.org started being repo-signed a while ago,还有一个名为 .nupkg.metadata
的单独文件,其中包含应用签名本身之前文件的哈希值。
然而,包含上述 2 个哈希值的文件是在 之后生成的。从 nuget.org 检索 .nupkg 文件并由 NuGet 客户端安装,这有点让首先无法检查下载的 .nupkg 是否未被篡改。
那么如何保证文件的完整性呢?通过名为 .signature.p7s
的签名文件,它本身存储在 .nupkg 文件中。使用此文件中的信息的方法是根据上面最新的 link 发布 nuget.exe verify -all <nupkg_file>
(nuget.exe 可以从 here 下载)。
这是一个被篡改的文件的结果(为了测试,我使用了 CommandLineParser NuGet 包并将其 license.md
文件从 .nupkg 中删除文件):