计算出的哈希值似乎与 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=
我有以下 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=