Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在.NET标准中计算程序集的哈希_.net_.net Core_.net Standard - Fatal编程技术网

在.NET标准中计算程序集的哈希

在.NET标准中计算程序集的哈希,.net,.net-core,.net-standard,.net,.net Core,.net Standard,在.NET标准中,是否有任何方法可以计算程序集的加密哈希?非常重要的是,除非在程序集中修改了某些内容(例如,它被重新构建),否则此哈希保持不变 例如,假设使用.NET Framework,我们将执行以下操作 var assembly=assembly.GetCallingAssembly(); var散列=新散列(程序集); var hashVal=hash.GenerateHash(新的SHA512Managed()); 我已尝试按如下所示序列化程序集,但出现错误 未处理的异常: Syste

在.NET标准中,是否有任何方法可以计算程序集的加密哈希?非常重要的是,除非在程序集中修改了某些内容(例如,它被重新构建),否则此哈希保持不变

例如,假设使用.NET Framework,我们将执行以下操作

var assembly=assembly.GetCallingAssembly();
var散列=新散列(程序集);
var hashVal=hash.GenerateHash(新的SHA512Managed());
我已尝试按如下所示序列化程序集,但出现错误

未处理的异常: System.Runtime.Serialization.SerializationException:类型 程序集中的“System.Reflection.RuntimeAssembly” 'System.Private.CoreLib,版本=4.0.0.0,区域性=中性, PublicKeyToken=7cec85d7bea7798e'未标记为可序列化

var assembly=assembly.GetCallingAssembly();
BinaryFormatter formatter=新的BinaryFormatter();
MemoryStream stream=新的MemoryStream();
序列化(流、程序集);
SHA512 sha=SHA512.Create();
var hash=Convert.ToBase64String(sha.ComputeHash(stream));

程序集文件的哈希值可能重复<代码>程序集.GetCallingAssembly().Location程序集签名自.NET 1.0以来已可用。另一方面,出于安全原因,不赞成使用BinaryFormatter。您不知道BinaryFormatter将产生什么。它很可能是一个有签名的恶意程序集,甚至有一个代码分析规则