por KamuiRyu Qua Jul 26, 2017 1:10 pm
GallighanMaker escreveu:Você pode usar algo parecido (utilizando uma hash MD5) - Código:
private string GetFileChecksum(string file, HashAlgorithm algorithm)
{
string result = string.Empty;
using (FileStream fs = File.OpenRead(file))
{
result = BitConverter.ToString(algorithm.ComputeHash(fs)).ToLower().Replace("-", "");
}
return result;
}
E após criar uma função para calcular o MD5, utlizar para ler algum arquivo remoto e comparar com um local: - Código:
string RemoteMD5checksum;
string LocalMD5checksum;
string remoteFile = "http://seuserver.com/seuarquivo.txt"
string localFile = "C:/suapasta/seuarquivo.txt"
RemoteMD5checksum = GetFileChecksum(remoteFile, new MD5CryptoServiceProvider());
LocalMD5checksum = GetFileChecksum(localFile, new MD5CryptoServiceProvider());
if(RemoteMD5checksum.Equals(LocalMD5checksum ))
//hash's iguais
else
//hash's diferentes
Se quiser dar uma olhada na documentação da referencia: System.Security.Cryptography;Update:Na verdade você terá que baixar esse arquivo remoto temporariamente, não sei se da pra verificar dessa forma passando o path completo. Dica:Você pode usar um foreach pra calcular todos arquivos remotos e pra verificar com cada um local.Espero ter ajudado.
Eu vi isso em um forum da microsoft, e acho que tenho um jeito de fazer com que seja mais rápido e fazer requisições ao servidor apenas para fazer o necessário, no caso, o download.
Bom, vou explicar aqui, vai saber se alguém tem o mesma duvida que eu. Da pra criar um arquivo txt, com o hash original dos seus arquivos, como eu disse antes, eu to baixando o arquivo, salvando em um array, e depois eu excluo esse arquivo, é instantâneo, a partir dai, já da para comparar o hash com o arquivo original. Acho que isso pode funcionar, quase certeza que vai funcionar.
Muito obrigado, você me ajudou bastante, não teria nem pensado em usar o hash em um arquivo, muito obrigado mesmo.