【问题标题】:MD5 to hash generating the same hash codeMD5 散列生成相同的散列码
【发布时间】:2019-07-12 10:07:26
【问题描述】:

我正在设置一个 Blob,我需要获取一些东西以将它们插入到我的数据库中,所以我编写了一个代码来根据我的 Stream 获取 hashId

我已经尝试在我的 FileStorageService 中使用 IFormFile,但这有点不对。

private string GetMD5HashFromFile(Stream data)
       {
          using (var md5 = MD5.Create())
          {
            using (var fileStream = data)
              {

                  var hash = md5.ComputeHash(fileStream);

                  var hashString = Convert.ToBase64String(hash);

                  return hashString.TrimEnd('=');

              }

          }
       }

这段代码总是生成相同的哈希,这样我就无法将我的 Blob 信息保存在我的数据库中

【问题讨论】:

  • 也许你想散列文件的内容而不是 FileStream 对象?
  • 进入这个方法的时候,确保流的Position为0了吗?
  • @churill MD5.ComputeHash 有一个接受Stream 的重载。
  • @churill 我认为我需要对所有流进行哈希处理,但如果您有解决方案,我会接受
  • @C.Evenhuis 有没有办法验证这一点?因为我第一次生成哈希时,我想到了一些东西。

标签: c# hash md5 filestream


【解决方案1】:

根据 C.Evenhuis 的评论,我的一个朋友这样解决:

 private string GetMD5HashFromFile(Stream data)
        {
            using (var md5 = MD5.Create())
            {
                data.Position = 0;
                var hash = md5.ComputeHash(data);
                var hashString = Convert.ToBase64String(hash);

                return hashString.TrimEnd('=');

            }
        }

【讨论】:

    猜你喜欢
    • 2013-08-19
    • 2015-06-25
    • 2012-06-17
    • 2014-09-09
    • 2012-04-19
    • 1970-01-01
    • 2013-08-29
    • 2013-04-24
    • 1970-01-01
    相关资源
    最近更新 更多