Potrzebuję obliczyć skrót zawartości pliku w języku C#? Tak, że mogę porównać dwa hashe plików w mojej aplikacji. Mam wyszukiwanie, ale nie znaleziono.Oblicz Hash zawartości pliku w C#?
Odpowiedz
Można użyć MD5CryptoServiceProvider
, który będzie współpracować z plików tekstowych oraz plików binarnych.
byte[] myFileData = File.ReadAllBytes(myFileName);
byte[] myHash = MD5.Create().ComputeHash(myFileData);
... Lub jeśli pracujesz z dużymi plikami i nie chcesz, aby załadować cały plik do pamięci:
byte[] myHash;
using (var md5 = MD5.Create())
using (var stream = File.OpenRead(myFileName))
myHash = md5.ComputeHash(stream);
można porównać do tablic bajtowych z dwóch plików z Enumerable.SequenceEqual
:
myHash1.SequenceEqual(myHash2);
Można również spróbować utworzyć kalkulator CRC. Zobacz: http://damieng.com/blog/2006/08/08/calculating_crc32_in_c_and_net
Należy szukać lepiej;)
using System.IO;
using System.Text;
using System.Security.Cryptography;
protected string GetMD5HashFromFile(string fileName)
{
FileStream file = new FileStream(fileName, FileMode.Open);
MD5 md5 = new MD5CryptoServiceProvider();
byte[] retVal = md5.ComputeHash(file);
file.Close();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < retVal.Length; i++)
{
sb.Append(retVal[i].ToString("x2"));
}
return sb.ToString();
}
Przeciągnij plik do tej funkcji tak.
GetMD5HashFromFile("text1.txt");
GetMD5HashFromFile("text2.txt");
Czy konieczne jest przekształcenie całej tablicy bajtów w ciąg znaków? Wydaje mi się, że muszę trochę popracować, żeby porównać te dwa hashe. –
Powinieneś użyć 'using' w strumieniu zamiast jawnie wywoływać' Close() '. – svick
- 1. Hash w pliku YAML?
- 2. Oblicz hash bez jednoczesnego posiadania całego bufora w pamięci
- 3. Oblicz Hash lub sumy kontrolnej dla tabeli w SQL Server
- 4. Oblicz i wydrukuj skrót SHA256 pliku za pomocą OpenSSL
- 5. Czyszczenie zawartości pliku tekstowego przy użyciu C#
- 6. Jak hash int [] w C#
- 7. Oblicz wartość mieszania MD5 przez C++ WinAPI
- 8. Hash table szybciej w C# niż C++?
- 9. Odczytywanie zawartości pliku w sharpsvn
- 10. Oblicz liczbę lat życia w C# WinForm
- 11. Computing Hash podczas zapisywania pliku?
- 12. Jak wygenerować Hash dowolnego pliku w java?
- 13. Czy C++ ma uporządkowane hash?
- 14. SQL bigint hash, aby dopasować C# int64 hash
- 15. Jak używać hash SHA1 w programowaniu C
- 16. Oblicz 32-bitową tabelę odnośników CRC w C/C++
- 17. Oblicz sumę kontrolną MD5 dla pliku
- 18. Visual C# - Zapisywanie zawartości pola tekstowego do pliku .txt
- 19. sendfile nie kopiuje zawartości pliku
- 20. Czytanie zawartości pliku csv w node.js
- 21. Czytanie zmian zawartości pliku w .NET
- 22. Jak uzyskać typ zawartości pliku w PHP?
- 23. Napisz do pliku CSV z hash perl
- 24. Wyodrębnij hash SHA1 z pliku torrentowego
- 25. Oblicz RFC 2104 zgodnych HMAC z algorytmem SHA256 hash w Ruby
- 26. Oblicz regresję logistyczną w pythonie
- 27. MSBuild minify i concat javascript, zawartość hash do nazwy pliku
- 28. C# HttpWebReqest - uciec zawartości POST?
- 29. Wyświetlanie zawartości kontenera wektorowego w C++
- 30. Przechwytywanie zawartości standardowego wyjścia w C#
Czy konieczne jest przekonwertowanie całego pliku na tablicę bajtów? – svick
@svick: Zaktualizowałem swoją odpowiedź. Dzięki za wejście! –
@MartinMulder, czy mogę używać słownika do przechowywania skrótu i porównywać go przez TryGetValue?)) Haszysz hash)) –