如何在C#中从源代码创建哈希码?

5
问题: 我正在尝试创建一个函数,以创建我的 asp.net web 应用程序后端源代码的哈希码。
只要没有任何更改,这个哈希码就需要是相同的。即使我重建我的项目。
有人知道我可以如何做到这一点吗? 我尝试过的方法: 我找到的唯一有效的解决方案是将所有重要文件连接成一个大字符串,并从中创建哈希码。
这个解决方案的问题是,我必须将所有源文件添加到输出目录中,而出于安全原因,这是不应该被做的。
希望有人有一个伟大的想法=)
提前感谢! 更新: 正如 Renat 建议的那样,我可以通过启用确定性构建来解决我的问题。
只需将确定性标志添加到我的 .csproj 文件中,如下所示:
<Deterministic>True</Deterministic>

你能否为输出目录中的所有二进制文件生成文件哈希值?https://stackoverflow.com/questions/50928253/calculate-hash-of-binary-file-containing-certain-bytes - Matt Evans
2
我可以问一下你为什么这样做吗? - Lasse V. Karlsen
@MatthewEvans 你找到了一个非常低质量的计算文件哈希值的建议...像https://dev59.com/1VkT5IYBdhLWcg3wh_3s这样的东西会更合理。 - Alexei Levenkov
不清楚为什么需要将所有源文件放入输出文件夹。 - Dmytro Mukalov
@DmytroMukalov 我还有哪些其他方式可以读取我的代码文件内容? - Tobias Etter
显示剩余3条评论
1个回答

4

即使我重建我的项目

您可以使用确定性构建,然后它将在由相同源代码构建的每个构建中生成相同的二进制文件。然后,您可以获取二进制文件的哈希值。


谢谢您的建议。我会尝试一下。 - Tobias Etter
谢谢。我通过添加确定性标志使其工作 =) - Tobias Etter
1
“确定性”取决于太多变量,所以我不确定是否会推荐使用此选项。最容易修复的可能是PathMap,但这样就要依赖于特定版本的编译器、libpath等。因此,在多个设置中构建相同的csproj仍可能提供错误的MVID。 - HellBaby

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接