计算出的哈希值似乎与 SHA256 不符

Computed Hash seems to be wrong with SHA256

我有以下 class 计算我要发送到服务器的文件的哈希值。

public class GetHashCode 
    {
        public static string CalculateHash()
        {
            try
            {
                var filePath = "\\abc\abc-fs\_My-Data\user\Documents\test.jpg";
                var fileStream = File.Open(filePath, FileMode.Open,
                FileAccess.Read, FileShare.ReadWrite);
                var hashProvider = SHA256.Create();
                var buffer = hashProvider.ComputeHash(fileStream);
                return Convert.ToBase64String(buffer);
            }
            catch (Exception err)
            {
                Console.WriteLine(err);
                return null;
            }        
        }
    }

当我通过另一个应用程序将文件发送到服务器时,我可以看到此操作的散列与我使用上面的代码创建的散列略有不同:

来自其他应用程序(正确的应用程序)的哈希值:

R7av4w6Ow3M3z%252bpKPBBpojzvLvyl6aM0Q7q%252bJ%252fDvLPQ%253d

用我的代码生成的哈希:

R7av4w6Ow3M3z+pKPBBpojzvLvyl6aM0Q7q+J/DvLPQ=

所以好像是特殊字符的编码有问题,但是我还不知道怎么解决。有人可以帮忙吗?提前致谢!

你的哈希没问题。

另一个应用程序的哈希似乎是 URL 编码的...两次!应用 URL 解码(例如使用 WebUtility.UrlDecode)两次似乎可以解决问题。

R7av4w6Ow3M3z%252bpKPBBpojzvLvyl6aM0Q7q%252bJ%252fDvLPQ%253d

-> URLDecode

R7av4w6Ow3M3z%2bpKPBBpojzvLvyl6aM0Q7q%2bJ%2fDvLPQ%3d

-> URLDecode

R7av4w6Ow3M3z+pKPBBpojzvLvyl6aM0Q7q+J/DvLPQ=